根据Laravel中相同数据透视表中的另一列从数据透视表中获取所有值

时间:2020-06-24 19:21:17

标签: laravel

我想知道如何基于同一表的另一列从数据透视表中获取所有值。例如,让我们考虑我们有两个表,即

产品 用户 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的产品列表

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();
        }