Il pourrait arriver que l'identifiant d'une table porte un nom différent de id. Par exemple, la table chalets pourrait avoir un identifiant qui s'appelle chalet_id.
Il est acceptable d'avoir un identifiant qui ne s'appelle pas id seulement si vous devez travailler avec une base de données existante qui ne respectait pas cette règle.
Lorsqu'on est en présence d'une telle irrégularité, si on ne prend pas certaines précautions, il ne sera pas possible de tirer profit de certains automatismes, comme par exemple l'utilisation de find().
Dans l'exemple suivant, on voit que find() recherche sans succès un champ nommé id. On obtient donc un message du genre « 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'chalets.id' in 'where clause' (SQL: select * from `chalets` where `chalets`.`id` = 1 limit 1)' »
Pour régler ce problème, on ajoutera la ligne suivante dans la classe :
Ex :
class Chalet extends Model
{
...
/**
* Nom de la clé primaire.
*
* @var string
*/
protected $primaryKey = 'chalet_id';
}
Il est désormais possible de faire un find() même si l'identifiant ne s'appelle pas id :
App\Chalet::find(1);
▼Publicité