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

これは 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 に答える
1

Why not use 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 に答える