3 回答
TA贡献1860条经验 获得超9个赞
试试这个:
交易.php
public function bulletins()
{
return $this
->belongsToMany(Bulletin::class, 'deals_items', 'deal_id', 'bulletin_id')
->withPivot('title','desc');
}
公告.php
public function deals()
{
return $this
->belongsToMany(Deal::class, 'deals_items', 'bulletin_id', 'deal_id')
->withPivot('title','desc');
}
从文档:
如前所述,为了确定关系连接表的表名,Eloquent 将按字母顺序连接两个相关模型名称。但是,您可以随意覆盖此约定。您可以通过向该belongsToMany方法传递第二个参数来实现 :
return $this->belongsToMany('App\Role', 'role_user');
除了自定义连接表的名称之外,您还可以通过向belongsToMany方法传递附加参数来自定义表上键的列名。第三个参数是您在其上定义关系的模型的外键名称,而第四个参数是您要加入的模型的外键名称:
return $this->belongsToMany('App\Role', 'role_user', 'user_id', 'role_id');
更新
当您将关系作为方法$bulletin->deals()访问时:您正在访问关系本身。这将返回\Illuminate\Database\Eloquent\Relations\BelongsToMany(在您的情况下)的实例。此处查询尚未执行,因此您可以继续向查询添加约束,例如:
$bulletin
->deals()
->where('seller_id', 45) // <---
->skip(5) // <---
-> ... (And so on)
当您将其作为动态属性访问时,您已经在执行查询,因此这将返回一个Collection实例。与将关系作为方法调用然后->get()在末尾附加,所以这两个是等价的:
$bulletin->deals()->get()
// equals to:
$bulletin->deals
检查这个其他答案,它回答了你的问题。
TA贡献1946条经验 获得超3个赞
交易等级:
public function bulletins()
return $this->belongsToMany('App\Bulletin', 'deals_items ', 'bulletin_id', 'deal_id')->withPivot('title','desc');
}
公告类:
public function deals()
return $this->belongsToMany('App\Deal', 'deals_items ', 'deal_id', 'bulletin_id')->withPivot('title','desc');
}
TA贡献1816条经验 获得超4个赞
交易模式 -
public function bulletins()
return $this->belongsToMany(Bulletin::class, 'deals_items ', 'bulletin_id', 'deal_id');
}
公告模式:-
public function deals()
{
return $this
->belongsToMany(Deal::class, 'deals_items', 'deal_id', 'bulletin_id',);
}
- 3 回答
- 0 关注
- 124 浏览
添加回答
举报