将额外的模型附加到 BelongstoMany 关系

LDU*_*BBS 2 php laravel eloquent

我有两个带有数据透视表的表(用户和饮料),用户与配置文件表有 hasOne 关系,有没有办法将配置文件表附加到数据透视表并获取所有数据。

用户

id | name | email
Run Code Online (Sandbox Code Playgroud)

简介

id | user_id | picture
Run Code Online (Sandbox Code Playgroud)

餐桌饮料

id | name | price
Run Code Online (Sandbox Code Playgroud)

数据透视表user_drinks

id | user_id | drink_id | quantity | price | status
Run Code Online (Sandbox Code Playgroud)

饮品型号

public function users()
{
   return $this->belongsToMany('App\User', 'user_drinks', 'drink_id', 'user_id')->withPivot('price', 'quantity')->withTimestamps();
}
Run Code Online (Sandbox Code Playgroud)

用户模型

public function drinks()
{
   return $this->belongsToMany('App\Drink', 'user_drinks', 'drink_id', 'user_id')->withPivot('price', 'quantity')->withTimestamps();
}

public function profile() {
         return $this->hasOne('App\Profile');
     }
Run Code Online (Sandbox Code Playgroud)

PS:我不想用原始 sql 查询写这个,这让我发疯。

Pro*_*sor 5

我不会改变表格关系。我会使用该->with()函数来获取现有关系中的个人资料信息。

所以,$user->drinks()->where('drink_id', $drink_id)->with('profile')->get();将是我的猜测。