带有明显值

时间:2017-02-24 20:26:57

标签: laravel distinct laravelcollective pluck

我正在尝试从数据库中检索数据并将它们绑定到html选择标记,并绑定它们我需要使用pluck所以我得到了我想在数组中显示的字段(key => value),因为FORM :: select。正常的采摘获得所有结果,而我想使用不同的。我的模型是Room,它看起来像:

    class Room extends Eloquent
{
    public $timestamps = false;

    protected $casts = [
        'price' => 'float',
        'floor' => 'int',
        'size' => 'float'
    ];

    protected $fillable = [
        'capacity',
        'description',
        'price',
        'floor',
        'size',
        'type',
        'photo_name'
    ];
}

虽然我在控制器中使用的功能如下:

public function getRooms()
    {
        $roomType = Room::pluck('type','type');
        $roomFloor = Room::pluck('floor','floor');

        return view('roomgrid')->with('type',$roomType)->with('floor',$roomFloor);
    }

我的视图包含这段代码来获取楼层:

{{FORM::select('floor', $floor, null,['class'=>'basic'])}}

像这样我得到重复的地板,我不想要。有什么办法让我可以得到不同的地板并采摘它们吗?提前谢谢。

5 个答案:

答案 0 :(得分:10)

为什么不使用groupBy()

$roomType = Room::groupBy('type')->pluck('type','type');

答案 1 :(得分:7)

Room::unique('floor')->pluck('floor', 'floor');

答案 2 :(得分:0)

2019更新

您不需要在pluck()中使用2个参数

只需:

$roomType = Room::groupBy('type')->pluck('type');

当然是将其放入数组中

$roomType = Room::groupBy('type')->pluck('type')->toArray();

有时候,我将结果用于whereIn子句,这对它很有用。

答案 3 :(得分:0)

distinct可以解决问题:

Room::query()->distinct()->pluck('type');

这将转换为以下SQL:

SELECT DISTINCT type FROM rooms

答案 4 :(得分:0)

您可以使用 KeyBy 或 pluck 使用相同的键值对来选择不同的值。 PHP数组只能有唯一键。从这个想法我们可以得到基于数组键的唯一模型。

Room::keyBy('floor')->pluck('floor');

Room::pluck('floor', 'floor');