1
votes

Comment obtenir les attributs actuels d'un modèle Eloquent?

Je voudrais obtenir les clés d'un modèle, pas les colonnes de la base de données.

Voici un exemple de ce que je voudrais réaliser:

>>> $model = Model::first();
=> [
     "foo" => 3,
     "bar" => 4
   ]
>>> $model->baz = 5;
>>> $model->keys() // What I would like to do...
=> ["foo", "bar", "baz"]

Malheureusement, get_object_vars ne fonctionne pas ici.


1 commentaires

essayez array_keys ($ model-> toArray ())


4 Réponses :


1
votes

Utilisez array_keys ($ model-> toArray ()) pour trouver les tableaux. Il vous montrera des tableaux de clés.


0 commentaires

1
votes

Pour obtenir les attributs sans ses valeurs

  1. Pour l'instance de modèle:

    array_keys($model->getAttributes())

  2. Pour le nom de la table du modèle:

    Schema::getColumnListing('tasks');


0 commentaires

1
votes

<?php

Hi nowox,

//in your Model create a method getKeysAtribute like
...
public function getKeysAttribute() {
    return array_keys($this->attributes);
}
...

 $model->keys() // ['key1', 'key2', ...];


2 commentaires

L'idée est d'avoir ceci pour n'importe quel modèle, pas seulement pour certains.


Ok, vous pouvez créer créer un modèle de base et l'étendre



1
votes

Laravel a un buit en dehors de la méthode pour faire cela

cette méthode Wsa introduite dans laravel 5.4 Donc, seule une application avec une version 5.4 ou avec une version supérieure ne fonctionnera que strong >

//gets the first model from the table
$model  = Model::first();

//to get the original data With value
$originalAndData = $model->getOriginal();
//to get only the filed names
$originalKey = array_keys($model->getOriginal());


1 commentaires

array_keys ne fonctionne pas: >>> array_keys ($ model) Avertissement PHP: array_keys () s'attend à ce que le paramètre 1 soit array,