使用条件从数据库填充Laravel 4中的表单选择字段?

时间:2013-09-25 21:27:47

标签: php laravel laravel-4

使用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;

2 个答案:

答案 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。