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.
4 Réponses :
Utilisez array_keys ($ model-> toArray ())
pour trouver les tableaux. Il vous montrera des tableaux de clés.
Pour obtenir les attributs sans ses valeurs
Pour l'instance de modèle:
array_keys($model->getAttributes())
Pour le nom de la table du modèle:
Schema::getColumnListing('tasks');
<?php Hi nowox, //in your Model create a method getKeysAtribute like ... public function getKeysAttribute() { return array_keys($this->attributes); } ... $model->keys() // ['key1', 'key2', ...];
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
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());
array_keys
ne fonctionne pas: >>> array_keys ($ model) Avertissement PHP: array_keys () s'attend à ce que le paramètre 1 soit array,
essayez
array_keys ($ model-> toArray ())