为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel Eloquent:我的数据透视表有关系

Laravel Eloquent:我的数据透视表有关系

PHP
蓝山帝景 2023-03-04 14:18:28
这里有一些关于表格的信息User table-id-nameUserProduct table-id-user_id-product_idProduct table-id-nameContribution-id-user_product_id-contribution用户模型public function products(){    return $this->belongsToMany('App\Product');}产品型号public function users(){    return $this->belongsToMany('App\User');}用户产品枢轴模型use Illuminate\Database\Eloquent\Relations\Pivot;class UserProduct extends Pivot{    public function contribution()    {        return $this->hasMany('App\Contribution');    }}我试了一下,auth()->user()->products()->first()->pivot->contribution()但它给出了一些错误。调用未定义的方法 Illuminate\Database\Eloquent\Relations\Pivot::contribution()
查看完整描述

2 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

你可以使用自定义数据透视表模型吗?

class UserProduct extends Pivot

{

  public function contribution()

  {

    return $this->belongsTo('App\Contribution');

  }

}

// User model


public function products()

{

    return $this->belongsToMany('App\Product')->using('App\UserProduct');

}

希望对你有帮助。


查看完整回答
反对 回复 2023-03-04
?
MM们

TA贡献1886条经验 获得超2个赞

我们不能在枢轴对象上调用函数。

解决方案是:

首先,将UserProduct添加到别名中,以便我们可以在blade中调用它。

配置\应用程序.php :

'aliases' => [ 
  'UserProduct' => App\UserProduct::class, 
],

然后,使用查找函数然后调用关系函数

刀刃 :

@foreach ($product->users as $user)
    @foreach (UserProduct::find($user->pivot->id)->contribution()->get() as $contribution) 
            // viewing contribution attribute
    @endforeach
    @endforeach

不要忘记包含数据透视表 ID

产品型号:

public function users(){   
 return $this->belongsToMany('App\User')
                ->withPivot(['id']);
}


查看完整回答
反对 回复 2023-03-04
  • 2 回答
  • 0 关注
  • 107 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信