2012-10-29 73 views
1

加入我需要使用不同的參數,如加入到創建一個查詢:FuelPHP查詢生成器在多個領域

SELECT foo.*, bar.* FROM foo LEFT JOIN bar ON foo.c1 = bar.c1 AND foo.c2 = bar.c2 WHERE foo c3 = "somedata"; 

的問題是,我無法找到如何創建「和」使用FuelPHP查詢生成器。

謝謝。

+0

不知道FuelPHP但他們的文檔中清楚地顯示如何做到這一點。例如'('foo') - > join('bar','LEFT') - > on('foo.c1','=','foo.c1)中的$ result = DB :: select ') - > where('foo.c3',「somedata」) - > execute();' – Reflective

回答

2

可以通過一個連接使用多個 - > on。在這種情況下,Builder將使用「AND」將它們組合起來。

0

它們編譯條件使得不能設定值等status = 1

我增加了功能在編譯on_string到\燃料\核心\ Database_Query_Builder_Join

public function on_string($string) { 
    $this->_on_string = $string; 
    return $this; 
} 

的方式()

 if ($this->_on_string == "") { //yau add on string 
     $conditions = array(); 
     foreach ($this->_on as $condition) { 
      // Split the condition 
      list($c1, $op, $c2) = $condition; 

      if ($op) { 
       // Make the operator uppercase and spaced 
       $op = ' ' . strtoupper($op); 
      } 

      // Quote each of the identifiers used for the condition 
      $conditions[] = $db->quote_identifier($c1) . $op . ' ' . $db->quote_identifier($c2); 
     } 

     // Concat the conditions "... AND ..." 
     $sql .= '(' . implode(' AND ', $conditions) . ')'; 
    } else {    
     $sql .= '(' . $this->_on_string . ')'; //yau add on string 
    } 

將您的方法也暴露給Database_Query_Builder_Select。

public function on_string($string) 
{ 
    $this->_last_join->on_string($string); 

    return $this; 
} 
0

我不認爲這是坦貞攸需要的。 您可以根據字符串的選擇,但你需要躲避價值的,像這樣:

->on('t.object_property', '=', \DB::quote($property));