gpt4 book ai didi

many-to-many - Eloquent ORM/Laravel - 使用自定义数据透视表结构

转载 作者:行者123 更新时间:2023-12-04 03:58:57 25 4
gpt4 key购买 nike

我正在尝试使用自定义数据库结构构建 Laravel 应用程序。我有 table types , units , content ,以及一个名为 relations 的数据透视表. relations的结构表是这样的:

---------------------------------------------
| id | relation_type | first_id | second_id |
---------------------------------------------
| 1 | type_unit | 1 | 2 |
---------------------------------------------
| 2 | unit_content | 2 | 3 |
---------------------------------------------

换句话说,前三个表之间是多对多的关系,第四个是所有关系的数据透视表。我如何使用 Eloquent 的 BelongsToMany具有此数据透视表结构的方法,即如何仅选择与给定关系相关的数据透视表记录?例如,我将如何仅使用 type_unit 关系:
class Type extends Eloquent {

public function units()
{
return $this->belongsToMany('Unit', 'relations');
}

}

但同时忽略了 unit_content 关系?

最佳答案

belongsToMany将接受第三和第四个参数。你可以在文档中看到它:http://laravel.com/docs/eloquent#relationships

但是文档中没有的一点是,您可以通过链接查询构建器函数(如 where)来约束您的关系。 , orderBy等等。

所以你的代码会是这样的:

class Type extends Eloquent {

public function units()
{
return $this->belongsToMany('Unit', 'relations', 'first_id', 'second_id')
->withPivot(['relation_type'])
->where('relations.relation_type', '=', 'type_unit');
}

}

关于many-to-many - Eloquent ORM/Laravel - 使用自定义数据透视表结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17766816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com