Kohana 3. 使用 OR 加入多个条件

Kohana 3. Join with multiple condition using OR

我正在使用 Kohana 查询生成器并尝试下一步:

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

这意味着:

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

但是如何强制使用 OR 而不是 KO3 查询生成器连接方法的 AND

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

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

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

所以你至少有两种方法:

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

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