1

I'm using Kohana Query Builder and trying do next:

$query
 ->join(«t1», «INNER»)
 ->on(«t1.id»,»=»,»t2.parent_id»)
 ->on(«t1.id»,»=»,»t3.x_id»)

This means:

INNER JOIN t1
ON(t1.id = t2.parent_id AND t1.id = t3.x_id)

But how force to use OR instead of AND of KO3 query builder join methods?

INNER JOIN t1
ON(t1.id = t2.parent_id OR t1.id = t3.x_id)
4

1 回答 1

2

由于 Konaha 源代码,所有on()方法都与AND

// Concat the conditions "... AND ..."
$sql .= ' ON ('.implode(' AND ', $conditions).')';

所以你至少有两种方法:

  • 重新定义Database_Query_Builder_Join方法以支持OR连接器
  • (这是作弊)DB::expr()用作方法的第三个参数,on()例如:

    ->on('t1.id', '=', DB::expr('t2.parent_id OR t1.id = t3.x_id))

于 2015-02-19T10:40:40.557 回答