Laravel 5 - 从Eloquent查询中获取2个列表/数组

时间:2015-08-19 21:05:39

标签: laravel-5 eloquent

我无法弄清楚如何将以下所需的输出作为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"}]

如何在一个查询中获得所需的输出,并将列表/数组分开以匹配所需的输出?

1 个答案:

答案 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();