我正在尝试从数据库中检索数据并将它们绑定到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'])}}
像这样我得到重复的地板,我不想要。有什么办法让我可以得到不同的地板并采摘它们吗?提前谢谢。
答案 0 :(得分:10)
为什么不使用groupBy()
?
$roomType = Room::groupBy('type')->pluck('type','type');
答案 1 :(得分:7)
Room::unique('floor')->pluck('floor', 'floor');
答案 2 :(得分:0)
您不需要在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');