Kohana数据库查询生成器与JOIN& ON&和

时间:2012-05-10 10:04:36

标签: 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', '=', '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并且可以帮助我吗?

3 个答案:

答案 0 :(得分:5)

或者你可以这样做....

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

答案 1 :(得分:1)

为什么不在哪里使用:

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

答案 2 :(得分:1)

这似乎适用于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'))