Php 无枢轴模型的雄辩关系
我有3张表格:Php 无枢轴模型的雄辩关系,php,laravel,laravel-5,eloquent,Php,Laravel,Laravel 5,Eloquent,我有3张表格: 客户:字段:id、名称 项目:字段:id、名称 客户项目:字段:客户id、项目id、数量 客户和项目有我们所期望的各自的型号 问题:如果没有枢轴模型,我如何将这两个(客户和项目)联系起来。 我想使用$customer->items直接获取客户项目,而不是执行$customer->customerItem->items,因为我不想按项目跟踪customerItems和customer 此外,我不能直接为项目模型使用customer\u items表,因为我可能需要检索其控制器中的所
客户
:字段:id、名称
项目
:字段:id、名称
客户项目
:字段:客户id、项目id、数量
客户
和项目
有我们所期望的各自的型号
问题:如果没有枢轴模型,我如何将这两个(客户和项目)联系起来。
我想使用$customer->items
直接获取客户项目,而不是执行$customer->customerItem->items
,因为我不想按项目跟踪customerItems和customer
此外,我不能直接为
项目模型使用customer\u items
表,因为我可能需要检索其控制器中的所有项目。正如@kerbholz所指出的(但他们没有创建答案),在您的客户模型中,您需要以下功能:
公共功能项()
{
返回$this->belongtomany('App\Item');
}
假设您的项目模型类位于应用程序中。您也可以在项目模型中执行相反的操作
现在,您应该能够执行$customer->items
并获得一组项目。
如果要包括数量
字段,则需要:
公共功能项()
{
返回$this->belongstomy('App\Item')->withPivot('qty');
}
请注意,您仍然需要透视表,您无法逃避它,但现在您可以以更优雅的方式导航它。创建customer\u items
表并包括custmer\u item\u id
和user\u id
。在用户
模型中包括此功能
public function basket() // example
{
return $this->belongsToMany(User::class, 'customer_items', 'user_id', 'custmer_item_id');
}
“与其做$customer->customerItem->items”如何设置模型关系?@kerbholz这是一个问题,我该如何设置客户可以与项目有很多关系,而不必为CustomerItems设置枢轴模型。考虑到客户模型中有一个数据透视表,设置关系有许多与客户项目模型的关系否,我的意思是,您的模型现在在代码中的关系如何?!您需要的是“标准”行为,因为项目模型的表是项目
,它如何知道它从数据透视表获取关系?如果我用不同的方式命名它,比如customer\uuuuuuuu\items\u collection
。要使它在Laravel框架内工作,并让Laravel神奇地处理它,您必须遵守命名约定。数据透视表名称的字母顺序是modelA\u modelB谢谢!终于有了意义。顺便说一句,您可以通过将第二个参数传递给BelongToMany来指定透视表belongtomany('App\Item'、'customer\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu items\u collection')
这太令人困惑了,为什么拉威尔要用belongt