Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取满足laravel中方法的所有用户_Php_Laravel - Fatal编程技术网

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是对的。如果你那样做的话,看起来会很乱。