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并且可以帮助我吗?

4

3 回答 3

5

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

->join(array('text', 'text_se'), 'LEFT')
    ->on('main_table.text', '=', DB::Expr('text_se.id AND text_se.lang_code = "SV"'))
于 2012-05-11T23:01:00.830 回答
1

为什么不使用 where:

->join(array('text', 'text_se', 'LEFT')
->on('main_table.text', '=', 'text_se.id')
->where('text_se.lang_code', '=', 'SV')
于 2012-05-10T13:42:30.413 回答
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'))
于 2014-12-30T00:00:54.180 回答