在Laravel 4中将3个值与User :: lists组合在一起

时间:2014-09-03 23:00:09

标签: php laravel laravel-4

目前我这样做是为了将用户列表传递到我的视图中:

$users = User::lists('name', 'id');
return View::make('admin.gifs.add')->with('user_list', $users);

视图如下所示:

{{ Form::select('owner-id', $user_list, NULL, array('class' => 'form-control')) }}

效果很好,并在选择字段中输出name,其值为id。我想要做的是在选择字段中显示nameemail。这可能吗?

我试过像$users = User::lists('name', 'email', 'id');这样的东西没有用,有没有办法将它们组合在一起,让select的值与First Last [email@domain.com]类似?

2 个答案:

答案 0 :(得分:1)

$users = User::lists('name','email','id');

然后你必须修改结果数组,使它包含两个值而不是三个。

$correctList = [];
foreach ($users as $u) {
   $correctList[] = [$u->name . $u->email, $u->id];
}

然后将新列表传递给视图,您就完成了。

答案 1 :(得分:1)

您可以在原始查询中与CONCAT一起破解,但它不值得。

相反,请自己构建列表:

$users = [];

User::all()->each(function ($user) use (&$users)
{
    $users[$user->id] = "{$user->name} [{$user->email}]";
});

return View::make('admin.gifs.add')->with('user_list', $users);