Laravel Query Builder和"不是唯一的表/别名"错误

时间:2017-10-05 01:58:49

标签: php laravel

我有根据输入参数连接表的条件代码

    $content = Content::select('content.*');

    if (isset($filters['ruleNumber'])) {
        $content->join('violation', 'violation.content_id', '=', 'content.id')
                ->where('violation.rule_number', $filters['ruleNumber']);
    }

    if (isset($filters['unprocessed'])) {
        $content->join('violation', 'violation.content_id', '=', 'content.id')
                ->where('violation.status', 'pending');
    }

如果$ filters [' ruleNumber']和$ filters ['未处理的']都到期,则会导致重复的联接查询(即"违规&#34 ;加入两次)。我可以在调用join()之前跟踪我的连接,但是我需要在使用查询构建器的任何地方实现此逻辑。

框架似乎并不支持开箱即用,或者我错过了什么?

1 个答案:

答案 0 :(得分:2)

我做了一些微小的改变..尝试这可能是工作

$content = Content::select('content.*');
if (isset($filters['ruleNumber']) || isset($filters['unprocessed'])){
    $content->join('violation', 'violation.content_id', '=', 'content.id')
}

if (isset($filters['ruleNumber'])) {
    $content->where('violation.rule_number', $filters['ruleNumber']);
}

if (isset($filters['unprocessed'])) {
    $content->where('violation.status', 'pending');
}