为什么查询返回空集合?
问题描述:
我有以下查询始建通过Laravel:为什么查询返回空集合?
$res = Announcement::whereExists(function ($query) {
$query->select(DB::raw(1))
->from('announcement_category')->join('user_category', 'user_category.category_id', '=', 'announcement_category.category_id')
->where('user_category.user_id', '=', 1)
->where('announcement_category.announcement_id', '=', 'announcements.id');
});
dd($res->get());
上面的代码给我空集:dd($res->get());
。
此查询的普通的SQL代码:
select * from `announcements` where exists (select 1 from
`announcement_category` inner join `user_category` on
`user_category`.`category_id` = `announcement_category`.`category_id` where `user_category`.`user_id` = 1
and `announcement_category`.`announcement_id` = announcements.id)
and `announcements`.`deleted_at` is null
如果直接在MySQL执行此,我得到两个结果行。
但是为什么dd($res->get());
回廊空?
答
我不认为这是在雄辩模型whereExists ...试试这个:
$res = DB::table('announcement')->whereExists(function ($query) {
$query->select(DB::raw(1))
->from('announcement_category')->join('user_category', 'user_category.category_id', '=', 'announcement_category.category_id')
->where('user_category.user_id', '=', 1)
->where('announcement_category.announcement_id', '=', 'announcements.id');
})->get();
+0
它是:[link](https://laravel.com/api/5.4/Illuminate/Database/Query/Builder.html#method_whereExists) – d1c1pl3
你为什么用'DB ::原料(1)'在SELECT子句? – mrabbani
如果使用'*'结果相同 – Darama