获取所有符合laravel中方法的用户

时间:2018-08-09 09:01:14

标签: 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->first_name }}
  @endif
@endforeach

这也很好,但是使用起来效率不高。如果有很多检查方法怎么办?有这个主意吗?

3 个答案:

答案 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)

代替签入模型文件,您可以直接在控制器中查询以下代码

  1. 如果您只想显示isPicker = 1个用户。

控制器代码:

$users = User::where('isPicker', 1)->get();

刀片代码:

@foreach($users as $user)
    {{ $user->first_name }}
@endforeach

OR

  1. 如果要显示所有用户,包括isPicker 0&1。

控制器代码:

$users = User::all();

刀片代码:

@foreach($users as $user)
  @if($user->isPicker == 1)
    {{ $user->first_name }}
  @else
    <p>Picker is 0</p>
  @endif  
@endforeach

注意:由于用户模型文件isPicker未被使用,因此将其删除。