Laravel Eloquent:我的数据透视表具有关系 [英] Laravel Eloquent: My Pivot table has relation

查看:122
本文介绍了Laravel Eloquent:我的数据透视表具有关系的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有关此表的一些信息

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆