如果两个外键匹配,如何在多对多关系中找到比率?

发布时间:2021-02-25 06:33

这是我的用户项目数据透视表

| item_id | user_id | rate |

并且我在用户和项目模型中定义了多对多关系 这是我的用户模型

public function items()
    {
        return $this->belongsToMany(Item::class, 'item_user')->withPivot('rate');
    }

这是我的物品模型

 public function users()
    {
        return $this->belongsToMany(User::class, 'item_user')->withPivot('rate');
    }

这是我的控制器。假设我有 item_id。我想找到 user 和 item_id id 匹配的比率。

 public function findRate(Request $request){
        $user=User::where('id',auth()->user()->id)->first();
        $item_rate=$user->items->where('item_id', '1')->first();
        dd($user);
        return response()->json([
            'item_rate'=>$item_rate,
        ]);

    }

我试过这样但错误说这个集合实例上不存在属性[pivot]

  $item_rate=$user->items->where('item_id', '1')->pivot()->rate;
回答1

试试这个

 $item_rate=$user->items()
            ->where('item_id',1)
            ->first()
            ->pivot
            ->rate;