Mysql 原始SQL到laravel查询生成器
如何将这个原始sql构建器转换为laravel DB构建器Mysql 原始SQL到laravel查询生成器,mysql,laravel,Mysql,Laravel,如何将这个原始sql构建器转换为laravel DB构建器 SELECT * FROM `applications` WHERE EXISTS (SELECT * FROM `applicants` INNER JOIN `applicant_application` ON `applicants`.`id` =
SELECT *
FROM `applications`
WHERE EXISTS (SELECT *
FROM `applicants`
INNER JOIN `applicant_application`
ON `applicants`.`id` =
`applicant_application`.`applicant_id`
WHERE `applications`.`id` =
`applicant_application`.`application_id`
AND `user_id` = 18)
ORDER BY `created_at` DESC
LIMIT 20
这是我尝试过的,但似乎不起作用
DB::table('applications as apt')
->whereExists( function ($q) {
$q->from('applicants as app')
->join('applicant_application as aa', 'app.id', '=', 'aa.applicant_id')
->where('apt.id', '=', 'aa.application_id')
->where('app.user_id', '=', 18);
})->orderBy('created_at', 'DESC')->paginate(10);
非常感谢您的帮助,因为
apt.id
和aa.application\u id
是diff表中的两列,您正在使用where
将apt.id
与字符串'aa.application\u id'
进行比较
您需要使用whereColumn来比较两个不同的列:
->whereColumn('apt.id','=','aa.application\u id')
因为apt.id
和aa.application\u id
是来自不同表格的两列,您使用where
将apt.id
与字符串
进行比较
您需要使用whereColumn来比较两个不同的列:
->whereColumn('apt.id','=','aa.application\u id')
太好了,谢谢:)太好了,谢谢:)