Php 自定义表上的Laravel 5 belongsToMany()
我用的是定制的桌子。这是一个简单的用户角色特性。但不使用传统的雄辩的数据库模式风格 表用户Php 自定义表上的Laravel 5 belongsToMany(),php,laravel,laravel-5,eloquent,Php,Laravel,Laravel 5,Eloquent,我用的是定制的桌子。这是一个简单的用户角色特性。但不使用传统的雄辩的数据库模式风格 表用户 用户标识(PK) 用户名(varchar) 表角色 罗莱德(PK) roleName(varchar) 表userrole数据透视列 用户角色ID 罗莱德 用户ID 现在我有了一个使用这种方法的模型用户 public function roles() { return $this->belongsToMany("App\Role", "userrole", "roleId", "us
public function roles()
{
return $this->belongsToMany("App\Role", "userrole", "roleId", "userId");
}
当我这样打电话时,它会出错
$roles = App\User::where("userId", "1")->first()->roles;
dd($roles);
显示的错误为:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'role.id' in 'on clause' (SQL: select `role`.*, `userrole`.`roleId` as `pivot_roleId`, `userrole`.`userId` as `pivot_userId` from `role` inner join `userrole` on `role`.`id` = `userrole`.`userId` where `userrole`.`roleId` is null)
这是我谦虚的请求。请不要建议更改表架构。我不能。我受够了。
谢谢大家! 您在“用户角色”模型上设置了主键吗 Laravel自动假定您的主键名为
id
见此:
请看主键部分:
Eloquent还将假定每个表都有一个主键列
命名的id
。您可以定义$primaryKey
属性来覆盖此属性
惯例
尝试在您的userrole
模型上覆盖它,如下所示:
protected $primaryKey = 'roleId';
尽量仔细阅读所有文件。谢谢!这就是问题所在!非常感谢。这对我很有帮助。谢谢。这是我谦虚的回答,除非你对
email
、SSN
等密钥有一个有意义的名称,否则请遵守约定。因为我不需要这样的回答,我希望我们每个人都能在我们工作的每个项目中都能遵守Taylor Otwell的约定,当你不得不在Zend Framework v1和Codeigniter中学习时,你就会明白成为一名专业的web开发人员是什么感觉。