laravel - Laravel join 和 unionAll
问题描述
我有一个数据库查询。它现在已经可以工作了,但是我正在尝试将该unionAll
方法添加到此查询中,但我没有这样做。我想将这两个表与unionAll
方法结合起来。
$uid = Auth::id();
$homeCovering = DB::table('bid_requests')
->leftJoin('bid_home_coverings', 'bid_requests.id', '=', 'bid_home_coverings.bidId')
->where('bid_requests.userId', '=', $uid)
->where('district', '!=', null)
->get();
$vehicleCovering = DB::table('bid_requests')
->leftJoin('bid_vehicle_coverings', 'bid_requests.id', '=', 'bid_vehicle_coverings.bidId')
->where('bid_requests.userId', $uid)
->where('district', '!=', null)
->get();
解决方案
使用unionAll()
方法,还要确保你真的需要 union all,union 和 union all 是有区别的
$homeCovering = DB::table('bid_requests')
->select('bid_requests.*')
->leftJoin('bid_home_coverings', 'bid_requests.id', '=', 'bid_home_coverings.bidId')
->where('bid_requests.userId', '=', $uid)
->where('district', '!=', null);
$bid_requests = DB::table('bid_requests')
->select('bid_requests.*')
->leftJoin('bid_vehicle_coverings', 'bid_requests.id', '=', 'bid_vehicle_coverings.bidId')
->where('bid_requests.userId', $uid)
->unionAll($homeCovering)
->where('district', '!=', null)
->get();
或者您可以将这些查询合并为一个查询
$bid_requests = DB::table('bid_requests')
->select('bid_requests.*')
->leftJoin('bid_vehicle_coverings', 'bid_requests.id', '=', 'bid_vehicle_coverings.bidId')
->leftJoin('bid_home_coverings', 'bid_requests.id', '=', 'bid_home_coverings.bidId')
->where('bid_requests.userId', $uid)
->where('district', '!=', null)
->get();
如果您需要不同的出价请求,请添加->distinct()
推荐阅读
- laravel - Laravel request->all() 显示带有页面 url 的数组
- android - 在 setTargetFragment 中出现错误
- java - 无法解决 IntelliJ IDEA 2018.1 中的依赖关系
- sql-server - 检查命名的 SQL Server 实例是否在本地计算机上运行
- python - Python中的pyinstaller超过了最大递归深度?
- python - 致命的 Python 错误:(pygame 降落伞)分段错误不起作用
- ruby - Ruby if 语句优化重构最佳实践
- python-2.7 - dask 如何在多个系统上实现?
- javascript - 如何动态循环json字符串中的所有值
- node.js - 是否有 mocha 记者记录控制台输出,而不是测试代码?