Join 科哈纳3。使用或连接多个条件
我正在使用Kohana查询生成器并尝试执行下一步操作:Join 科哈纳3。使用或连接多个条件,join,kohana,query-builder,kohana-3.3,Join,Kohana,Query Builder,Kohana 3.3,我正在使用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) 但是,如何强制使用KO3查询生成器连接方法的或而不是和 INNER JOIN t1 ON(t1.id =
$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)
但是,如何强制使用KO3查询生成器连接方法的或而不是和
INNER JOIN t1
ON(t1.id = t2.parent_id OR t1.id = t3.x_id)
由于使用了Konaha源代码,因此()上的所有
方法都与和有关:
// Concat the conditions "... AND ..."
$sql .= ' ON ('.implode(' AND ', $conditions).')';
因此,您至少有两种方法:
- 重新定义
Database\u Query\u Builder\u Join
方法以支持或concatator
- (这是作弊)使用
DB::expr()
作为on()
方法的第三个参数,如:
->on('t1.id','=',DB::expr('t2.parent\u id或t1.id=t3.x\u id))
似乎有和硬编码。因此,您要么需要编写/查找自己的查询生成器,要么根本不使用I thinkDB::expr()。。我为什么不早点想呢?太好了,谢谢!