laravel 资源获取数据时改变id
laravel resource change the id when get data
我正在使用 laravel 中的资源,当我获取数据时它要求我提供 ID 但我的 table 中的主键是 user_menu_id 如何更改使用资源路线
路线
Route::resource('/UserMenuController', 'UserMenuController');
错误
Unknown column 'user_menus.id' in 'where clause' (SQL: select * from
user_menus
where user_menus
.id
= 1 limit 1)
型号
<?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'];
}
错误提示不存在名为 user_menus
的 table。在模型中设置真实的table名字$table
属性:
protected $table = 'user_menu';
或者您可以 follow Laravel naming conventions 如我的回购协议中所述,只需将 table 重命名为 user_menus
(user_menu
class 的复数形式)。
你说主键也不标准,也改成$primaryKey
:
protected $primaryKey = 'user_menu_id';
在你的模型中定义主键class,你就会成功。
您遇到错误的原因是 Laravel 始终假设主键是 id
。阅读错误日志,您会注意到:
1054 Unknown column 'user_menus.id'
- 您可以立即知道它正在尝试查找不存在的列。
解决方法是将 $primaryKey
分配给您的模型 class,例如:
protected $primaryKey = 'user_menu_id';
根据 this article,您需要覆盖 $primaryKey
属性:
<?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';
}
Eloquent 将假定每个 table 都有一个名为 id
的主键列。您可以定义一个受保护的 $primaryKey
属性 来覆盖此约定。
class user_menu extends Model
{
protected $primaryKey = 'user_menu_id';
}
我正在使用 laravel 中的资源,当我获取数据时它要求我提供 ID 但我的 table 中的主键是 user_menu_id 如何更改使用资源路线
路线
Route::resource('/UserMenuController', 'UserMenuController');
错误
Unknown column 'user_menus.id' in 'where clause' (SQL: select * from
user_menus
whereuser_menus
.id
= 1 limit 1)
<?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'];
}
错误提示不存在名为 user_menus
的 table。在模型中设置真实的table名字$table
属性:
protected $table = 'user_menu';
或者您可以 follow Laravel naming conventions 如我的回购协议中所述,只需将 table 重命名为 user_menus
(user_menu
class 的复数形式)。
你说主键也不标准,也改成$primaryKey
:
protected $primaryKey = 'user_menu_id';
在你的模型中定义主键class,你就会成功。
您遇到错误的原因是 Laravel 始终假设主键是 id
。阅读错误日志,您会注意到:
1054 Unknown column 'user_menus.id'
- 您可以立即知道它正在尝试查找不存在的列。
解决方法是将 $primaryKey
分配给您的模型 class,例如:
protected $primaryKey = 'user_menu_id';
根据 this article,您需要覆盖 $primaryKey
属性:
<?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';
}
Eloquent 将假定每个 table 都有一个名为 id
的主键列。您可以定义一个受保护的 $primaryKey
属性 来覆盖此约定。
class user_menu extends Model
{
protected $primaryKey = 'user_menu_id';
}