Laravel采摘,但结合名字+姓氏选择

时间:2017-06-10 16:22:16

标签: laravel laravel-5 eloquent jquery-select2

将select2与Laravel / Vue项目一起使用,需要以下列格式返回JSON:

[
    { id: 0, text: 'enhancement' },
    { id: 1, text: 'bug' }
]

在Laravel我知道我可以使用pluck来创建我的列表数据,例如对于客户:

$customers = Customer::pluck('id', 'first_name');

但是想要将id和名字+姓氏作为单个名称返回。

我该怎么做?

6 个答案:

答案 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");