我正在尝试(没有成功)使用流利的查询生成器执行 join + insert 语句。这是有问题的代码:
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')
但是,错误仍然存在..