将select2与Laravel / Vue项目一起使用,需要以下列格式返回JSON:
[
{ id: 0, text: 'enhancement' },
{ id: 1, text: 'bug' }
]
在Laravel我知道我可以使用pluck来创建我的列表数据,例如对于客户:
$customers = Customer::pluck('id', 'first_name');
但是想要将id和名字+姓氏作为单个名称返回。
我该怎么做?
答案 0 :(得分:10)
您是否尝试过使用Accessors?
https://laravel.com/docs/5.4/eloquent-mutators#defining-an-accessor
我没有测试过,但这可行:
将此添加到您的客户口才模型:
public function getFullNameAttribute($value)
{
return ucfirst($this->first_name) . ' ' . ucfirst($this->last_name);
}
然后尝试:
更新选择访问者只适用于集合。如果您尝试Customer::pluck('id', 'full_name')
它将无效,因为没有名为full_name的db列,因此您必须使用Customer::all()->pluck('id', 'full_name')
$customers = Customer::all()->pluck('id', 'full_name');
Customer::all(['id', 'first_name', 'last_name'])->pluck(...)
,这样我们就不会从db中删除不必要的列。希望这有帮助。
答案 1 :(得分:0)
你可以这样做,
$customers = DB::table('customers')->select("id", "CONCAT(firstname,' ',lastname) as fullname")->get();
或者您也喜欢这样,
$customers = DB::table('customers')->select(DB::raw('CONCAT(firstname,' ',lastname) as fullname, id'))->get();
或用PHP方式,
$fullname = $customers->firstname. " " .$customers->lastname;
答案 2 :(得分:0)
对我来说有效
\DB::table("admin as c")->select(\DB::raw("CONCAT(FirstName, ' ', LastName) AS FIRSTNAME"),"c.AdminID")->pluck("FIRSTNAME","AdminID");
答案 3 :(得分:0)
用户模型:
public function getFullNameAttribute()
{
return "{$this->first_name} {$this->last_name}";
}
获取查询将导致收集:
$agents = User::whereId($agent->id)->get()->pluck('full_name', 'id');
为了将变量从对象转换为数组:
$agents = json_decode(json_encode($agents), true);
对我有用。享受。
答案 4 :(得分:0)
/**
* Get the full name of the user.
*
* @return string
*/
public function getFullNameAttribute()
{
return "{$this->first_name} {$this->last_name}";
}
并使用这个采摘
User::all()->sortBy('id')->pluck('full_name', 'id')
喜欢这个
public static function list()
{
return Cache::tags('usersCustomers')->rememberForever(md5('usersCustomers.list:' . locale()), function () {
return self::all()->sortBy('id')->pluck('full_name', 'id');
});
}
答案 5 :(得分:0)
使用此代码。希望它会起作用。我用这段代码解决了这个问题
User::select(DB::raw("CONCAT(first_name, ' ', last_name) AS full_name"),"id")->pluck("full_name","id");