我想知道如何基于同一表的另一列从数据透视表中获取所有值。例如,让我们考虑我们有两个表,即
产品 用户 product_user(数据透视表) 数据透视表列为:product_user 1. user_id 2. product_id 3.类型(值可以为1或2)
说我想从user_id为1且类型也为1的表中检索所有行
示例数据:
user_id product_id类型1 1 1 1 3 1 1 76 1 2 2 2 1 21 1 1 33 2 1 23 2 1 25 1
预期结果是所有基于user_id为1且类型为1的产品列表
答案 0 :(得分:0)
实际上,我在这里回答自己的问题,因为我找到了解决问题的确切方法
$userId = 1;
$type = 1;
$user = User::where('id', $userId)->firstOrFail();
$products = $user->products() ->where('type', $type)->get();
考虑到在内部用户模型中设置了product()多对多关系:
public function products() {
return $this->belongsToMany(Product::class)
->withPivot(['type'])
->withTimestamps();
}