Laravel 查询生成器 (5.6)
Laravel queryBuilder (5.6)
你好,我正在尝试将此 SQL 代码复制到 Laravel qBuilder 中,但我没有在集合中得到我想要的结果:
select chars.name, class.name, specs.name
FROM characters as chars
JOIN charclasses as class
JOIN charspecs as specs
WHERE chars.class_id = class.id
AND chars.spec_id = specs.id
我得到以下输出:
然后我在 Laravel 中尝试了这个:
$charData = DB::table('characters')
->select('characters.*', 'charclasses.name', 'charspecs.name')
->join('charclasses', 'characters.class_id', '=', 'charclasses.id')
->join('charspecs', 'characters.spec_id', '=', 'charspecs.id')
->orderBy('user_id', 'ASC')
->get();
dd($charData);
结果是:
问题是您select正在使用同名的三个字段。这些字段在 php 代码中被添加到一个数组中,但是数组字段被覆盖了两次,因为关联数组中不能有重复的键。如果你想 select 这三个名字,你将不得不给他们另一个名字。
$charData = DB::table('characters')
->select('characters.*', 'charclasses.name as charclassname', 'charspecs.name as charspecname')
->join('charclasses', 'characters.class_id', '=', 'charclasses.id')
->join('charspecs', 'characters.spec_id', '=', 'charspecs.id')
->orderBy('user_id', 'ASC')
->get();
dd($charData);
你好,我正在尝试将此 SQL 代码复制到 Laravel qBuilder 中,但我没有在集合中得到我想要的结果:
select chars.name, class.name, specs.name
FROM characters as chars
JOIN charclasses as class
JOIN charspecs as specs
WHERE chars.class_id = class.id
AND chars.spec_id = specs.id
我得到以下输出:
然后我在 Laravel 中尝试了这个:
$charData = DB::table('characters')
->select('characters.*', 'charclasses.name', 'charspecs.name')
->join('charclasses', 'characters.class_id', '=', 'charclasses.id')
->join('charspecs', 'characters.spec_id', '=', 'charspecs.id')
->orderBy('user_id', 'ASC')
->get();
dd($charData);
结果是:
问题是您select正在使用同名的三个字段。这些字段在 php 代码中被添加到一个数组中,但是数组字段被覆盖了两次,因为关联数组中不能有重复的键。如果你想 select 这三个名字,你将不得不给他们另一个名字。
$charData = DB::table('characters')
->select('characters.*', 'charclasses.name as charclassname', 'charspecs.name as charspecname')
->join('charclasses', 'characters.class_id', '=', 'charclasses.id')
->join('charspecs', 'characters.spec_id', '=', 'charspecs.id')
->orderBy('user_id', 'ASC')
->get();
dd($charData);