如何使用Laravel Eloquent在两个表之间创建子查询

问题描述 投票:0回答:1

大家好我是Laravel开发的新手,我想知道如何在两个表之间创建子查询,例如,我想执行这个查询:

SELECT * FROM `contracts` 
WHERE `trainer_id` = '1' OR id IN (
    SELECT `contract_id` FROM `trainees` 
    WHERE `user_id` = '1'
)

我测试它并且它可以正常工作,我想知道如何在Laravel雄辩中写出它

php mysql laravel rest eloquent
1个回答
5
投票

假设您的模型名为Contract,您可以使用以下语法来实现您想要的:

Contracts::where('trainer_id', '1')
    ->orWhere(function ($subquery) {
        $subquery->whereIn('id', function ($query) {
            $query->select('contract_id')
                ->from('trainees')
                ->where('user_id', '1');
        })
    })->get();
© www.soinside.com 2019 - 2024. All rights reserved.