我正在创建一个应用程序,其中用户可以被分配到多个组织,组织可以有多个用户--多对多的关系。
我希望能够这样做:$user->organizations()->get()
以及$organizations->users()->get()
用户
表...组织
表...user_orgs
数据透视/映射/等。表user_orgs
表有一个org_id
字段和一个user_id
字段。
Elecoquent假设并期望organization_user
-但这不是我为表命名的,也不想重命名。
我设置了以下内容
public function users(){
return $this->belongsToMany("App\User");
}
用户:
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.organization_user”不存在(sql:选择organizations
,organization_user
。user_id
作为pivot_user_id
,organization_user
。organization_id
作为organizations
从organizations
内部加入
我脑子里的两个问题是,一个;如何使用
user_orgs
,而不是假设organization_user
,就像我可以重写模型上的tableName
或primarykey
一样?第二:如何指定foreignKey列,使其使用user_orgs.org_id
而不是user_orgsorganization_id
?
但请提出替代方案。
谢谢大家,提前。
您可以通过将透视表作为第二个参数传递给bongstomany()
关系来设置透视表的名称,如下所示:
public function users(){
return $this->belongsToMany("App\User", "user_orgs");
}
public function organisations(){
return $this->belongsToMany("App\Organisation", "user_orgs");
}
文档:https://laravel.com/docs/5.8/Elecoquent-Relationships#多对多
如前所述,为了确定关系的连接表的表名,Eloquent将按字母顺序连接两个相关的模型名。但是,您可以自由地覆盖此约定。可以通过向belomstomany方法传递第二个参数来实现。
如果我尝试以下操作,则页面正在加载: 有以下表格:-用户-user_department-部门 数据透视表用户\u部门有两个外键:-部门\u id-用户\u id 在我的用户模型中: 在我的部门模型中: 顺便说一下:以下代码正在工作: 但是我无法在不破坏我的页面的情况下获得用户的部门。 有什么想法吗?
用户表结构:用户 id、名称、用户名、密码、创建时间、更新时间 文章表结构:文章 id、标题、内容、创建时间、更新时间 关系表:文章\用户 id、文章id、用户id处于活动状态、创建时间、更新时间 标签 id、名称、用户id、创建时间、更新时间 透视表项目用户与标记的关系。表:文章\用户\标签 标签号,物品号,用户号 我想连接这些表,以便可以像这样或类似的格式访问 并且应该能够创建/更新smth,
我对定义关系和框架都是新手,我只是习惯了原始SQL。我做了家庭作业(google Laravel文档),但我想我只是没有正确理解它。 以下是相关信息:用户表: 挑战表: 用户挑战链接 Challenge_sub_categories 所以我的目标...用户- 这些关系: 一个用户有很多User_challenge_links User_challenge_link有challenge_sub_ca
问题内容: 我是一起定义关系和框架的新手,我只是习惯于原始SQL。我做了家庭作业(google + Laravel文档),但是我认为我不太了解它。 以下是相关信息:用户表: 挑战表: User_challenge_links Challenge_sub_categories 所以我的目标..用户->挑战。 关系: 一个用户有许多User_challenge_links 一个User_challen
我试图创建一个关系,通过一个名为年级的模型访问一个名为注释的表,通过年级中的学生加载 年级模型和学生模型都属于其他模型 根据我的理解,不可能访问需要透视表的hasManyThrough关系(注释没有年级标识符,只有学生标识符) 我为Laravel 4@HasManyThrough找到了这些函数,它们具有一对多关系,但它给了我一个错误类“App\illumb\Database\Eloquent\Re
您好,当我更新或删除API中的数据时,我需要有关laravel 8多对多关系透视表的帮助。这些是我的文件信息。首先,我创建了两个表:Companies(迁移文件) 联系人(迁移文件) 在此之后,创建透视表company\u contact(迁移文件) 模型如下所示:公司模型 } 联系人模型 } 我的路线文件 我的公司控制人 } 公司存储请求 公司资源 也许有人可以帮助我在公司控制器中编写正确的st