Php 获取满足laravel中方法的所有用户
我试图获取Php 获取满足laravel中方法的所有用户,php,laravel,Php,Laravel,我试图获取User模型中给定方法遇到的所有用户。请参阅下面我的代码: User.php public function isPicker(){ return ($this->where('isPicker', 1)) ? true : false; } 现在,我可以使用User::all(),但它返回所有用户。我想要的是只返回满足isPicker()方法的用户。我想做的是: @foreach($users as $user) @if($user->isPicker())
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
这也可以很好地工作,但它的使用效率不高。如果有很多方法需要检查呢?有什么想法吗?只要做:
$users = User::where('isPicker', 1)->get();
或创建范围:
public function scopeIsPicker($query)
{
return $query->where('isPicker', 1);
}
// usage
$users = User::isPicker()->get();
嗯,你可以把你的代码改成这样
@foreach($users->where('isPicker', 1)->all() as $user)
{{ $user->first_name }}
@endforeach
User::where('isPicker', 1)->get()
但是,只有当用户var是一个集合时,这才起作用
另一个明智的做法是,改变你的查询方式,让用户知道你是如何做到这一点的
@foreach($users->where('isPicker', 1)->all() as $user)
{{ $user->first_name }}
@endforeach
User::where('isPicker', 1)->get()
您可以直接在控制器中查询,而不用签入模型文件。请尝试下面的代码
如果只想显示isPicker=1个用户
控制器代码:
$users = User::where('isPicker', 1)->get();
$users = User::all();
刀片代码:
@foreach($users as $user)
{{ $user->first_name }}
@endforeach
@foreach($users as $user)
@if($user->isPicker == 1)
{{ $user->first_name }}
@else
<p>Picker is 0</p>
@endif
@endforeach
或
如果要显示包括iPicker 0和1在内的所有用户
控制器代码:
$users = User::where('isPicker', 1)->get();
$users = User::all();
刀片代码:
@foreach($users as $user)
{{ $user->first_name }}
@endforeach
@foreach($users as $user)
@if($user->isPicker == 1)
{{ $user->first_name }}
@else
<p>Picker is 0</p>
@endif
@endforeach
@foreach($users作为$user)
@如果($user->isPicker==1)
{{$user->first_name}
@否则
选择器为0
@恩迪夫
@endforeach
注意:从用户模型文件中删除isPicker函数,因为它未使用。您在用户模型上添加了该函数,laravel知道,由于它以范围开始,因此可以称为isPicker
。以下是关于这个主题的文档:天哪!就是这样。我不认为它在laravel中可用:)您真的不应该在视图文件中运行查询。如果我使用User::where('isPicker',1)->get()
,如果将来我添加了一些方法来检查用户
模型的某些内容呢?确实如此@DigitalDriver是对的。如果你那样做的话,看起来会很乱。