我试图让所有用户都在User
模型中的给定方法相遇。请在下面查看我的代码:
User.php
public function isPicker(){
return ($this->where('isPicker', 1)) ? true : false;
}
现在,我可以使用User::all();
,但是它将返回所有用户。我想要的只是返回符合isPicker()
方法的用户。我想做的是:
@foreach($users as $user)
@if($user->isPicker())
{{ $user->first_name }}
@endif
@endforeach
这也很好,但是使用起来效率不高。如果有很多检查方法怎么办?有这个主意吗?
答案 0 :(得分:4)
只需:
$users = User::where('isPicker', 1)->get();
或创建范围:
public function scopeIsPicker($query)
{
return $query->where('isPicker', 1);
}
// usage
$users = User::isPicker()->get();
答案 1 :(得分:0)
好吧,您可以对代码进行一些改动,使其看起来像这样。
@foreach($users->where('isPicker', 1)->all() as $user)
{{ $user->first_name }}
@endforeach
但这仅在用户var是一个集合的情况下有效。
从其他方面来说,只需更改您的查询即可,以了解如何将用户吸引到这样的地方。
User::where('isPicker', 1)->get()
答案 2 :(得分:0)
代替签入模型文件,您可以直接在控制器中查询以下代码
控制器代码:
$users = User::where('isPicker', 1)->get();
刀片代码:
@foreach($users as $user)
{{ $user->first_name }}
@endforeach
OR
控制器代码:
$users = User::all();
刀片代码:
@foreach($users as $user)
@if($user->isPicker == 1)
{{ $user->first_name }}
@else
<p>Picker is 0</p>
@endif
@endforeach
注意:由于用户模型文件isPicker未被使用,因此将其删除。