1

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

我认为这可能是一个简单的修复,但我还没有找到解决方案>

4

2 回答 2

4

这也应该有效:

User::where('status', '!=', '0')->lists('username', 'user_id')

但是正如 JT Grimes 所提到的,您应该将此代码移动到用户控制器中的方法中,或者更好地使用名为 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'))
于 2013-09-26T13:32:56.113 回答
1

我以前从未见过lists()应用于模型实例——我假设只返回一条记录?

我会尝试

// warning: untested code...
...
DB::table('user')->where('status','<>',0)->lists('username','user_id'),
...

我还将它移动到控制器 ( $userList = DB::table('user')...) 并将该变量传递给视图。在视图中进行数据库调用似乎不是最理想的 MVC。

于 2013-09-25T21:45:52.197 回答