我是 Laravel 和 Eloquent 的新手,我正在尝试从 3 个表中检索唯一记录,即 cupboards、item_types 和一个 pivotcupboard_items。还有第四个位置表。
在 MySQL 中构建了一个工作查询,如下所示(在 MySQL 工作台上成功测试)。尝试使用 DB::raw('') 和 DB::statement(''),但我的 IDE 发出警告说“没有配置数据源来运行此 SQL 并提供高级代码帮助”并使用 DB::raw 返回DB::statement 返回“true”时为空对象。
SELECT cupboards.cupboard_id, cupboards.name, cupboards.capacity, dist.item_type_id, item_types.name, locations.coordinates FROM cupboards INNER JOIN
(SELECT DISTINCT cupboard_items.item_type_id, cupboard_id FROM cupboard_items) AS dist
ON cupboards.cupboard_id = dist.cupboard_id
INNER JOIN item_types ON dist.item_type_id = item_types.item_type_id
INNER JOIN locations ON locations.location_id = cupboards.location_id;
不确定我的语法是否错误,但我随后也尝试构建一个 Eloquent 查询
$result = DB::table('cupboards')
->select(DB::raw('cupboards.cupboard_id, cupboards.name, cupboards.capacity, dist.item_type_id, item_types.name, locations.coordinates'))
->join(DB::raw('SELECT DISTINCT cupboard_items.item_type_id, cupboard_id FROM cupboard_items'))
->join('item_types', 'dist.item_type_id', '=', 'cupboard.item_type_id')
->join('locations', 'locations.location_id', '=', 'cupboards.location_id')
->get();
但显然我的 DB::raw 查询语句中不能有 DISTINCT,并且不确定我的连接是否正确完成。任何关于如何从这里开始的建议都非常感谢!!!谢谢!