我正在使用Laravel 5.6
。我有一个users
表和firstname
和lastname
字段。
在我的User
模型中,我也具有此功能
public function name()
{
return $this->firstname . ' ' . $this->lastname;
}
现在在另一个控制器中,我想与所有用户一起创建一个下拉菜单。但我想显示name()
,而不仅要显示名字/姓氏。
我目前正在使用
$users = \App\User::pluck('lastname', 'id');
return view('myview', compact('MY_collection' , 'users'));
在我看来(使用collective/html)
{!! Form::select('user', $users, isset($user) ? $MY_collection->user: null, ['class' => 'form-control']) !!}
是否可以将pluck与方法功能一起使用?还是我应该做些其他事情?
我也知道accessor解决方案,但是我在数据库中没有name
属性,因此它不起作用。
答案 0 :(得分:1)
除了声明访问者名称以“ get ”开头并以 Attribute ( camelCase)结尾: getFullNameAttribute > === 全名。
您应该将访问器添加到 $ appends :
protected $appends=['<your Accessor name>']
//protected $appends=['full_name']
//usage:
//$this->full_name
$ appends 数组使访问者可以追加到模型的数组形式。
然后使用它:
collect(json_decode($modelName->tojson(),true))->pluck('full_name','id')
答案 1 :(得分:0)
访问者可以是您选择的任何名称,它们只需以get
开头并以Attribute
结尾:
public function getNameAttribute() {
return $this->firstname . ' ' . $this->lastname;
}
$user->name
// this will give the result as above
public function getBlahBlahBlahAttribute() {
return $this->firstname . ' ' . $this->lastname;
}
$user->blah_blah_blah
这两种方法都应该可以采摘。
User::get()->pluck('name');
$user->setAppends(['name']);
$user->pluck('name');
答案 2 :(得分:0)
您可以像这样串联名字和姓氏。
$user = App\User::select(DB::raw('CONCAT(firstname, ", ", lastname) AS full_name'),'id')->pluck('full_name','id');