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))
我正在使用 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))