Join Kohana数据库查询生成器,带有连接、打开和

Join Kohana数据库查询生成器,带有连接、打开和,join,kohana,kohana-3.2,Join,Kohana,Kohana 3.2,我正在处理一个查询,该查询使用COALESCE检索当前项目的本地化字符串 sql在用作原始查询时可以工作,但我似乎无法用查询生成器以这种方式构造联接 LEFT JOIN text as text_se ON (main_table.text = text_se.id) AND (text_se.lang_code = 'SV') 此代码: ->join(array('text', 'text_se', 'LEFT') ->on('main_table.text', '=',

我正在处理一个查询,该查询使用COALESCE检索当前项目的本地化字符串

sql在用作原始查询时可以工作,但我似乎无法用查询生成器以这种方式构造联接

LEFT JOIN text as text_se
ON (main_table.text = text_se.id)
AND (text_se.lang_code = 'SV')
此代码:

->join(array('text', 'text_se', 'LEFT')
    ->on('main_table.text', '=', 'text_se.id')
    ->on('text_se.lang_code', '=', 'SV')
只会导致

LEFT JOIN text as text_se
ON (main_table.text = text_se.id AND text_se.lang_code = 'SV')
这不一样。。。 有没有其他人使用过JOIN语句后的AND并可以帮助我?

为什么不使用where:

->join(array('text', 'text_se', 'LEFT')
->on('main_table.text', '=', 'text_se.id')
->where('text_se.lang_code', '=', 'SV')

或者你可以这样做

->join(array('text', 'text_se'), 'LEFT')
    ->on('main_table.text', '=', DB::Expr('text_se.id AND text_se.lang_code = "SV"'))

这似乎适用于3.1.x:

->join(array('text', 'text_se', 'LEFT')
->on('main_table.text', '=', DB::expr('text_se.id'))
->on('text_se.lang_code', '=', DB::expr('SV'))

您可以发布完整的原始查询吗?这在这个实例中可能有效,但是where参数将只影响where子句。在某些情况下,需要在多个条件下联接表以进一步优化查询。在这种情况下,左联接将起到内部联接的作用