2017-10-05 46 views
0

我有加入,取決於輸入表PARAMSLaravel查詢生成器和「不是唯一的表/別名」錯誤

$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'); 
    } 

條件代碼,如果$過濾器[「ruleNumber」]和$過濾器[「未處理」 ]是由於,它會導致重複連接查詢(即「違規」連接兩次)。在調用join()之前,我可以跟蹤我的連接,但我需要在使用查詢構建器的任何地方實現此邏輯。

看起來很奇怪,框架不支持這個開箱即用,或者我錯過了什麼?

回答

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'); 
} 
相關問題