我正在创建一个应用程序,其中可以将用户分配给多个组织,并且组织可以拥有多个用户 - 多对多关系。
我希望能够做这样的事情: $user->organisations()->get()
以及$organisation->users()->get()
我有一张users
桌子...
我有一张organisations
桌子...
我有一个user_orgs
枢轴/映射/等。桌子
笔记
该user_orgs表有一个org_id字段和一个user_id字段。
Eloquent 假设并期望organisation_user- 但这不是我为我的表命名的,我也不想重命名。
我设置了以下内容
应用程序/组织.php
public function users(){
return $this->belongsToMany("App\User");
}
和用户:
应用程序/用户.php
public function organisations(){
return $this->belongsToMany("App\Organisation");
}
然后我测试这个:
Route::get('/test-route', function(){
$u = App\User::first();
return $u->organisations()->get();
});
并得到以下错误:
SQLSTATE[42S02]:未找到基表或视图:1146 表 'db.organisation_user' 不存在(SQL:select organisations.*, organisation_user. user_idas pivot_user_id, organisation_user. organisation_idas pivot_organisation_idfrom internal organisationsjoin organisation_useron organisations. id= organisation_user. organisation_idwhere organisation_user. user_id= 1)
我心中的两个问题是,一;我如何指定 Eloquent 来使用user_orgs而不是假设organisation_user,就像我可以覆盖模型上的tableName或 一样primaryKey?二:如何指定foreignKey 列,使其使用user_orgs.org_id而不是user_orgs.organisation_id?
但请提出替代方案。
谢谢大家,提前。
Cats萌萌