如何解决两个子查询的外部连接本身与查询生成器连接 - Laravel 7.4
我有一个 API,它接受包含过滤器选项的请求。我目前正在基于该过滤器构建一个查询,它工作正常。但是,现在,我会向该查询添加两个单独的条件,然后将这些结果进行外部连接。
我只需要使用一张数据库表。我们称之为sales
。我们在这篇文章中唯一需要关注的字段是 sales.id
。
我像这样构建了我的初始过滤器查询:
$query = ApiService::prepareFilterQuery($request,$query); // returns Eloquent\Builder
然后我还想获取两个单独的结果集,然后将这些结果与该查询连接起来:
// Get the sales that are matched the user
$matchedSales = $user->matchingSales->getBuilder(); // returns another Eloquent\Builder
$filteredMatched = $query
->joinSub($matchedSales,'matched_sales',function($join) {
$join->on('sales.id','=','matched_sales.id');
})
->select('sales.* as filtered_matched_sales);
// Get any and all public sales,even if they aren't matched to the user
$publicSales = new \Eloquent\Builder(
DB::table('sales')
->where('sales.public',true)
->select('sales.*')
);
$filteredPublic = $query
->joinSub($publicSales,'public_sales',function($join) {
$join->on('sales.id','public_sales.id');
})
->select('sales.* as filtered_public_sales');
我现在如何对结果集 filteredPublic
和 filteredMatched
(删除重复项)进行外连接?
我试过做这样的事情:
$query = $filteredMatched
->joinSub($filteredPublic','filtered_public_sales,function($join) {
$join->on('filtered_matched_sales.id','filtered_public_sales.id','full outer join');
});
但最终失败并出现以下错误:
local.ERROR:SQLSTATE[42601]:语法错误:7 错误:语法错误在 或靠近“外部”
我怎样才能做到这一点?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。