使用Laravel 4和PHP,我能够查询数据库并填充HTML选择框。
魔术发生在User::find(1)->lists('username', 'user_id')
这是我的选择字段代码。
<?php
echo Form::label("username", "Username", array('class' => 'col-lg-12 control-label')); }}
echo Form::select(
'user',
User::find(1)->lists('username', 'user_id'),
Input::get('user'),
array(
"placeholder" => "US",
'class' => 'form-control'
)
)
?>
我需要修改它以仅使用未设置为0
status
的用户填充表单选择。
我认为这可能是一个简单的解决方案,但我还没有找到解决方案>
这也应该有效:
User::where('status', '!=', '0')->lists('username', 'user_id')
但正如 J.T. Grimes 所提到的,你应该把这段代码移到 Users 控制器中的一个方法中,或者更好的是,在一个名为 getActiveUsersList() 的方法中移动你的 User 模型:
public function getActiveUsersList()
{
return $this->where('status', '!=', '0')->lists('username', 'user_id');
}
不要忘记在控制器 __construct() 方法中键入提示您的用户模型。
protected $user;
public function __construct(User $user)
{
$this->user = $user;
}
并使用以下方法将其分配给控制器中的变量:
$activeUsersList = $this->user->getActiveUsersList();
然后,您可以使用以下命令将其传递给视图:
return View::make('users', compact('activeUsersList'))
我以前从未见过lists()
应用于模型实例 - 我假设只返回一条记录?
我会尝试
// warning: untested code...
...
DB::table('user')->where('status','<>',0)->lists('username','user_id'),
...
我也会把它移到控制器($userList = DB::table('user')...
)并将该变量传递给视图。 在视图中进行数据库调用似乎是次优的 MVC。