首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用pluck的Distinct值

使用pluck的Distinct值
EN

Stack Overflow用户
提问于 2017-02-25 04:26:57
回答 5查看 33.3K关注 0票数 21

我试图从数据库中检索数据,并将它们绑定到一个html select标记,为了绑定它们,我需要使用pluck,这样我就可以得到我想要在一个数组中显示的字段(key => value),这是因为FORM::select。普通的pluck可以得到所有的结果,而我想使用distinct。我的模型是Room,它看起来像:

代码语言:javascript
复制
    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'
    ];
}

而我在控制器中使用的函数看起来像:

代码语言:javascript
复制
public function getRooms()
    {
        $roomType = Room::pluck('type','type');
        $roomFloor = Room::pluck('floor','floor');

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

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

代码语言:javascript
复制
{{FORM::select('floor', $floor, null,['class'=>'basic'])}}

就像这样,我得到了重复的地板,我不想要。有什么方法可以让我得到不同的地板并把它们拔掉吗?提前谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-02-25 04:31:13

为什么不使用groupBy()

代码语言:javascript
复制
$roomType = Room::groupBy('type')->pluck('type','type');
票数 29
EN

Stack Overflow用户

发布于 2018-05-08 10:28:53

代码语言:javascript
复制
Room::unique('floor')->pluck('floor', 'floor');
票数 20
EN

Stack Overflow用户

发布于 2019-11-12 07:18:23

distinct可以做到这一点:

代码语言:javascript
复制
Room::query()->distinct()->pluck('type');

它将被转换为以下SQL:

代码语言:javascript
复制
SELECT DISTINCT type FROM rooms
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42447682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档