我需要填充刀片式格式<select>标签。
我知道填充select标记的Model::pluck('column1', 'column2')方法。
但在我的例子中,我必须连接两列,并获得id。就像这样
Model::pluck('column_1 && column_2', 'id')
有这样的可能吗?如果是,正确的语法是什么?
如果没有,那么最好的替代方案是什么?
发布于 2018-03-09 15:53:38
最好的解决方案是在你的模型中创建accessor函数,让我们假设如果你想得到全名,你可以这样做。
public function getFullNameAttribute()
{
return $this->first_name . ' ' . $this->last_name;
}而且你可以很容易地得到全名。
$users = User::where('id', 1)->get()->pluck('full_name', 'id');Eloquent将调用getFullNameAttribute函数并获得连接的值。
发布于 2018-03-09 15:28:14
您可以使用selectRaw()
Model::selectRaw("CONCAT ('column1', 'column2') as columns, id")->pluck('columns', 'id');或者,您可以手动执行此操作:
$collection = Model::get(['column1', 'column2', 'id']);
foreach ($collection as $item) {
$plucked[$item->id] = $item->column1 . $item->column2;
}
dd($plucked);发布于 2018-03-09 23:36:53
由get()方法检索的模型结果只是常规Support-Collection类的子类,因此您实际上可以访问所有相同的好东西。试试这个:
$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];
})https://stackoverflow.com/questions/49188577
复制相似问题