我无法弄清楚如何将以下所需的输出作为Eloquent中的2个列表:
// desired output
$citrusFruitsNames = ["lime","lemon"];
$citrusFruitsColors = ["green","yellow"];
我知道我可以在2个单独的列表中获得上面的输出:
$citrusFruitsNames = Fruit::whereType('citrus')->lists('name');
$citrusFruitsColors = Fruit::whereType('citrus')->lists('color');
但我想在一个查询中代替它。以下是我到目前为止尝试的输出:
$citrusFruits = Fruit::whereType('citrus')->lists('name');
// outputs ["lime","lemon"]
$citrusFruits = Fruit::whereType('citrus')->lists('name', 'color');
// outputs {"green":"lime","yellow":"lemon"}
$citrusFruits = Fruit::whereType('citrus')->get(['name', 'color']);
// outputs [{"name":"lime","color":"green"},{"name":"lemon","color":"yellow"}]
如何在一个查询中获得所需的输出,并将列表/数组分开以匹配所需的输出?
答案 0 :(得分:1)
最后,lists()
是集合上的一个方法,因此您可以一步检索数据并在另一个步骤中创建数组:
$fruit = Fruit::whereType('citrus')->get(['name', 'color']); // just get() works as well
$citrusFruitsNames = $fruit->lists('name');
$citrusFruitsColors = $fruit->lists('color');
注意,在Laravel 5.1中,lists
实际上返回一个新集合,而不是一个数组。在某些情况下可能无关紧要,但如果您真的想要获得一个数组,请在之后使用all()
:
$fruit->lists('name')->all();