使用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'
)
)
?>
我需要对此进行修改,以便仅将status
未设置为0
的用户填充表单选择。
我认为这可能是一个简单的修复,但我还没有找到解决方案&gt;
答案 0 :(得分:4)
这也应该有效:
User::where('status', '!=', '0')->lists('username', 'user_id')
但是作为J.T. Grimes提到,您应该将此代码移动到Users控制器中的方法中,或者更好地将您的用户模型移动到名为getActiveUsersList()的方法中:
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'))
答案 1 :(得分:1)
我之前没有看到lists()
应用于模型实例 - 我假设只返回一条记录?
我试试
// warning: untested code...
...
DB::table('user')->where('status','<>',0)->lists('username','user_id'),
...
我还将它移动到控制器($userList = DB::table('user')...
)并将该变量传递给视图。在视图中进行数据库调用似乎是次优的MVC。