Laravel Eloquent:我的数据透视表具有关系 [英] Laravel Eloquent: My Pivot table has relation
问题描述
有关此表的一些信息
User table
-id
-name
UserProduct table
-id
-user_id
-product_id
Product table
-id
-name
Contribution
-id
-user_product_id
-contribution
用户模型
public function products()
{
return $this->belongsToMany('App\Product');
}
产品型号
public function users()
{
return $this->belongsToMany('App\User');
}
UserProduct数据透视模型
UserProduct Pivot Model
use Illuminate\Database\Eloquent\Relations\Pivot;
class UserProduct extends Pivot
{
public function contribution()
{
return $this->hasMany('App\Contribution');
}
}
我尝试使用 auth( )-> user()-> products()-> first()-> pivot-> contribution()
,但会出现一些错误。
I try like auth()->user()->products()->first()->pivot->contribution()
but it gives some error.
调用未定义的方法Illuminate\Database\Eloquent\Relations\Pivot :: contribution()
Call to undefined method Illuminate\Database\Eloquent\Relations\Pivot::contribution()
推荐答案
Inspired by this problem. We cannot call function on pivot object.
首先,将 UserProduct 添加到别名,以便我们可以在刀片中对其进行调用。
First, add UserProduct to aliases so we can call it in blade.
config\app.php:
'aliases' => [
'UserProduct' => App\UserProduct::class,
],
然后,使用 find 函数,然后调用 relation 函数
Then, use find function then call the relation function
刀片:
@foreach ($product->users as $user)
@foreach (UserProduct::find($user->pivot->id)->contribution()->get() as $contribution)
// viewing contribution attribute
@endforeach
@endforeach
Don别忘了包含数据透视ID
产品型号:
public function users()
{
return $this->belongsToMany('App\User')
->withPivot(['id']);
}
这篇关于Laravel Eloquent:我的数据透视表具有关系的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!