Laravel 在联合结果中添加 where 子句
Posted
技术标签:
【中文标题】Laravel 在联合结果中添加 where 子句【英文标题】:Laravel add where clause to union result 【发布时间】:2016-09-21 09:11:14 【问题描述】:我正在对两个查询进行联合,我想在结果中添加 where 子句,但 where 子句仅添加到第一个查询中。我该如何解决?
$notifications = DB::table('notifications')
->select(DB::raw("notifications.uuid ,notifications.brand_id" ))
$posts = DB::table('posts')
->select(DB::raw("posts.uuid ,posts.brand_id" ))
->unionAll ($notifications)
->orderBy('created_at' , 'desc')
->where('brand_ids' , '=' , '2')
$result = $posts->get();
我想要这条线
->where('brand_id' , '=' , '2')
要添加到整个联合中,但它只添加到其中一个查询中。
【问题讨论】:
你不能在两个查询中添加->where('brand_id', '=', '2')
,并在unionAll
之前添加第二个(并删除brand_ids
where 子句)?
【参考方案1】:
我不确定是否有更好的方法,但这对我有用:
$notifications = DB::table('notifications')
->select(DB::raw("notifications.uuid ,notifications.brand_id"));
$posts = DB::table('posts')
->select(DB::raw("posts.uuid ,posts.brand_id"))
->unionAll($notifications)
->orderBy('created_at' , 'desc');
$result = DB::table(DB::raw("($posts->toSql()) as posts"))
->mergeBindings($posts)
->where('brand_id', '2')
->get();
【讨论】:
希望有更好的方法以上是关于Laravel 在联合结果中添加 where 子句的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 6:如何将多个 where 子句添加到关系中
LARAVEL 5.8 - 在 foreach 中使用数组的 WHERE LIKE 子句的多个条件没有给出完整的结果