流暢なクエリ ビルダーを使用して結合 + 挿入ステートメントを実行しようとしています (成功しませんでした)。問題のあるコードは次のとおりです。
DB::table('lnk_users_languages')
->join('lut_languages', 'lnk_users_languages.lang_id', '=', 'lut_languages.id')
->where('lut_languages', 'lut_languages.lang_code', '=', 'en')
->insert(array(
'user_id' => Auth::user()->id,
'lang_id' => DB::raw('lut_languages.id')
));
そして、ここに私のデータベース構造があります:
mysql> DESCRIBE lut_languages;
+-----------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| lang_code | varchar(2) | NO | UNI | NULL | |
| lang_name | varchar(30) | NO | | NULL | |
| dominant | tinyint(1) | NO | | NULL | |
+-----------+------------------+------+-----+---------+----------------+
mysql> DESCRIBE lnk_users_languages;
+---------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| user_id | int(10) unsigned | NO | MUL | NULL | |
| lang_id | int(10) unsigned | NO | MUL | NULL | |
+---------+------------------+------+-----+---------+----------------+
そして最後に、私が受け取るエラーは次のとおりです。
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'lut_languages.id' in 'field list' (SQL: insert into `lnk_users_languages` (`user_id`, `lang_id`) values (?, lut_languages.id))
ドキュメントが見つからないため、流暢なビルダーは join ステートメントと insert ステートメントを一緒に使用することを想定していないと思います。私が見つけたすべての例では、選択による結合を使用しています。考え?
編集
私の流暢な発言に誤りがあることに気付きました。
->where('lut_languages', 'lut_languages.lang_code', '=', 'en')
次のようにする必要があります。
->where('lut_languages.lang_code', '=', 'en')
ただし、エラーは引き続き発生します..