首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel ::pluck columns

Laravel ::pluck columns
EN

Stack Overflow用户
提问于 2018-03-09 15:24:40
回答 6查看 25.5K关注 0票数 20

我需要填充刀片式格式<select>标签。

我知道填充select标记的Model::pluck('column1', 'column2')方法。

但在我的例子中,我必须连接两列,并获得id。就像这样

Model::pluck('column_1 && column_2', 'id')

有这样的可能吗?如果是,正确的语法是什么?

如果没有,那么最好的替代方案是什么?

EN

回答 6

Stack Overflow用户

发布于 2018-03-09 15:53:38

最好的解决方案是在你的模型中创建accessor函数,让我们假设如果你想得到全名,你可以这样做。

代码语言:javascript
复制
public function getFullNameAttribute()
{
    return $this->first_name . ' ' . $this->last_name;
}

而且你可以很容易地得到全名。

代码语言:javascript
复制
$users = User::where('id', 1)->get()->pluck('full_name', 'id');

Eloquent将调用getFullNameAttribute函数并获得连接的值。

票数 36
EN

Stack Overflow用户

发布于 2018-03-09 15:28:14

您可以使用selectRaw()

代码语言:javascript
复制
Model::selectRaw("CONCAT ('column1', 'column2') as columns, id")->pluck('columns', 'id');

或者,您可以手动执行此操作:

代码语言:javascript
复制
$collection = Model::get(['column1', 'column2', 'id']);
foreach ($collection as $item) {
    $plucked[$item->id] = $item->column1 . $item->column2;
}
dd($plucked);
票数 6
EN

Stack Overflow用户

发布于 2018-03-09 23:36:53

get()方法检索的模型结果只是常规Support-Collection类的子类,因此您实际上可以访问所有相同的好东西。试试这个:

代码语言:javascript
复制
$eloquentCollection = app(YourModel::class)
    ->where('field', 'value')
    ->get(['id', 'column_1', 'column_2']);

$mapped = $eloquentCollection->mapWithKeys(function (YourModel $model) {
    return [$model->id => $model->column_1 . $model->column_2];
})
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49188577

复制
相关文章

相似问题

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