Laravel 5 - 使用where子句列出数据库条目

时间:2015-12-03 15:09:27

标签: mysql laravel-5

我正在尝试列出属于where条件的所有条目。如果我执行以下操作,则会返回所有返回的条目

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

但是,我希望只返回部门ID为3的用户。所以我正在做

$users = User::lists('userName', 'id')->where('departmentId', 3);

但是,这会返回一个空结果集。在我的数据库中,我确实有这个部门ID的用户。

如何让list语句正常工作?

只需注意,以下内容将返回我需要的结果

$users = User::select('userName', 'id')->where('departmentId', 3)->get();

但是,在我的编辑表单中,因为我有这个

!! Form::select('csManager', $users, Input::old('users'), ['class' => 'csManager']) !!}

未选择旧输入,数据显示为数组。我知道解决这个问题的方法就是像我这样选择

<select class="csManager" name="csManager">
    @foreach($users as $user)
    <option value="{{ $user->id }}">{{ $user->userName }}</option>
    @endforeach
</select>

但后来我不确定如何在上面的选择中显示旧用户。

任何帮助表示感谢。

由于

2 个答案:

答案 0 :(得分:1)

要标记旧选择,请尝试以下操作:

<option value="{{ $user->id }}" 
         {{ (Input::old('users') == $user->id)? 'selected' : '' }}>
    {{ $user->userName }}
</option>

正如@TimVanUum所说,如果您愿意,可以保存一些代码。两者都是平等的。

<option value="{{ $user->id }}" 
         {{ (Input::old('users') !== $user->id)?: 'selected'}}>
    {{ $user->userName }}
</option>

答案 1 :(得分:0)

在您的控制器中:

$users = User::where('departmentId', 3)->lists('userName', 'id');

以刀片形式:

{!! Form::select('csManager', $users, null, ['class' => 'csManager']) !!}

以编辑形式而不是

获取旧数据
{!! Form::open([your attributes]) !!}

使用模型绑定。像这样的东西:

{!! Form::model($user,[your attributes]) !!}
  

在这种情况下,您的编辑方法应该有$user=findOrFail($id);