0

流暢なクエリ ビルダーを使用して結合 + 挿入ステートメントを実行しようとしています (成功しませんでした)。問題のあるコードは次のとおりです。

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')

ただし、エラーは引き続き発生します..

4

1 に答える 1