3 votes

laravel resource change l'id quand on obtient des données

Je suis en train d'utiliser la ressource dans laravel quand je reçois les données il me demande l'id mais la clé primaire dans ma table est user_menu_id comment changer l'utilisation de la route de ressource

itinéraire

Route::resource('/UserMenuController', 'UserMenuController');

erreur

Colonne 'user_menus.id' inconnue dans la clause 'where' (SQL : select * from user_menus donde user_menus . id = 1 limite 1)

enter image description here modèle

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class user_menu extends Model
{

 protected $fillable = ['menu_parent_id', 'menu_title', 'menu_class', 
'menu_id', 'menu_link', 'created_by', 'updated_by', 'created_at', 'updated_at'];
}

1voto

Alexey Mezenin Points 86781

L'erreur dit qu'il n'y a pas de table avec un nom. user_menus . Définir le nom réel de la table $table dans le modèle :

protected $table = 'user_menu';

Ou vous pouvez respecter les conventions de dénomination de Laravel comme décrit dans mon repo et renommez simplement la table en user_menus (pluriel pour user_menu classe).

Vous avez dit que la clé primaire n'est pas standard aussi, donc changez-la aussi en $primaryKey :

protected $primaryKey = 'user_menu_id';

1voto

Shafiq al-Shaar Points 846

Définissez la clé primaire dans votre classe de modèle et vous serez en or.

La raison pour laquelle vous rencontrez une erreur est due au fait que Laravel suppose toujours que la clé primaire est id . En lisant le journal des erreurs, vous remarquerez :

1054 Unknown column 'user_menus.id' - vous pouvez tout de suite savoir qu'il essaie de trouver une colonne inexistante.

La volonté fixe est d'attribuer $primaryKey à votre classe de modèle, par exemple

protected $primaryKey = 'user_menu_id';

1voto

krisanalfa Points 3993

Selon cet article vous devez remplacer $primaryKey propriété :

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class user_menu extends Model
{
    protected $fillable = [
        'menu_parent_id', 'menu_title', 'menu_class', 
        'menu_id', 'menu_link', 'created_by', 'updated_by', 'created_at', 'updated_at'
    ];

    protected $primaryKey = 'user_menu_id';
}

-1voto

Mahdi Younesi Points 2953

Eloquent va supposer que chaque table a une colonne de clé primaire nommée id . Vous pouvez définir une $primaryKey pour passer outre cette convention.

class user_menu extends Model
{

    protected $primaryKey = 'user_menu_id';
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X