我需要填充刀片格式的<select>标记。我知道用Model::pluck('column1', 'column2')方法填充select标记。但是在我的例子中,我必须连接两个列,并获得id。Model::pluck('column_1 && column_2', 'id')是否可能?如果是,正确的语法是什么?如果不是,那么最好的选择是什么?
<select>
Model::pluck('column1', 'column2')
Model::pluck('column_1 && column_2', 'id')
dl5txlt91#
您可以使用selectRaw():
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);
wa7juj8i2#
get()方法检索到的模型结果只是常规Support-Collection类的子类,因此您实际上可以访问所有相同的好东西。
get()
$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]; })
py49o6xq3#
另一个简单道:
return User::select(DB::raw('CONCAT(first_name, " - ", last_name) AS full_name, id')) ->pluck('full_name', 'id');
dsekswqp4#
这里的读者应该知道,pluck方法返回一个对象,如果你想在不使用toArray方法的情况下,同时取多列并返回一个数组,你只需将列名传递给all()函数,它就会将所需的列作为数组返回。
toArray
all()
YourModelName::all('id', 'name');
slhcrj9b5#
现在已经很晚了,但你可以这样做:$data = Model::select('id','column_1','column_2')->get()然后在刀片内部使用,如:$data->first_name." ".$data->last_name
$data = Model::select('id','column_1','column_2')->get()
$data->first_name." ".$data->last_name
gz5pxeao6#
您可以使用以下命令选择所需的列:
YourModel::select('column1', 'columns2')->whereColumnId('1')->get() ->map(function($model){ return $model->column1.','.$model->column2; })->toArray();
enxuqcxy7#
最好的解决方案是在你的模型中创建访问器函数,让我们假设如果你想得到全名,那么你可以这样做。
public function getFullNameAttribute() { return $this->first_name . ' ' . $this->last_name; }
且您可以轻松地获得全名。
$users = User::where('id', 1)->get()->pluck('full_name', 'id');
Eloquent将调用getFullNameAttribute函数并获取连接值。
getFullNameAttribute
7条答案
按热度按时间dl5txlt91#
您可以使用
selectRaw()
:或者,您可以手动执行此操作:
wa7juj8i2#
get()
方法检索到的模型结果只是常规Support-Collection类的子类,因此您实际上可以访问所有相同的好东西。py49o6xq3#
另一个简单道:
dsekswqp4#
这里的读者应该知道,pluck方法返回一个对象,如果你想在不使用
toArray
方法的情况下,同时取多列并返回一个数组,你只需将列名传递给all()
函数,它就会将所需的列作为数组返回。slhcrj9b5#
现在已经很晚了,但你可以这样做:
$data = Model::select('id','column_1','column_2')->get()
然后在刀片内部使用,如:
$data->first_name." ".$data->last_name
gz5pxeao6#
您可以使用以下命令选择所需的列:
enxuqcxy7#
最好的解决方案是在你的模型中创建访问器函数,让我们假设如果你想得到全名,那么你可以这样做。
且您可以轻松地获得全名。
Eloquent将调用
getFullNameAttribute
函数并获取连接值。