くわこのpermission denied.

WEBエンジニアの僕がぶつかった技術的な問題や発見

【Laravel】Laravelで型の違う値でテーブルをjoinする方法 ('SQLSTATE[42883]: Undefined function: 7 ERROR: operator does not exist)

Laravelで型の違う値でテーブルをjoinする方法

laravel4でテーブルをjoinしたらタイトルのようなエラーが。

production.ERROR: exception 'Illuminate\Database\QueryException' with message 'SQLSTATE[42883]: Undefined function: 7 ERROR: operator does not exist: integer = text

型の違うもの同士(integerとtext)でjoin使用としてますよお兄さん的な。
hoge.id(int型)
page.id(text型)
でjoinしなければならない場合、どちらかの型をもう一方の型に合わせなければいけない。
仮にhoge.idをtext型に合わせるとするとlaravelのクエリビルダーでは

...
->leftJoin('page', DB::raw('hoge.id::text'), '=', 'page.id')
...

と書けばjoinできる。(hogeテーブルにpageテーブルをjoinする場合)

ふーむ、なるほど( ´_ゝ`)