【问题标题】:Find user by name and surname in USER collection在 USER 集合中按姓名和姓氏查找用户
【发布时间】:2020-12-16 20:32:22
【问题描述】:

这是我的代码:

public function search_clients($names){
    $user = Auth::user();

    $all_clients = $user->clients; // Retrieve object of all clients of user
         
    $names = ["Pera","Peric"]; // Pera - name, Peric - surname

    $collect = collect($all_clients);

    $klijenti = $collect->filter(function($query) use ($names){
      $query->whereIn('name', $names);
      $query->orWhere(function($query) use ($names) {
          $query->whereIn('surname', $names);
      });
      return $query;
    });
  return $klijenti;
 }

我想在对象中搜索姓名和姓氏并将其返回。就像我在 $all_clients 中有 100 个用户一样,我只想返回用户名或姓氏,例如“PERA”或“PERIC”。

目前它正在返回所有人。

【问题讨论】:

  • 您只想返回具有这些值的用户对象,还是只想返回那些字符串?
  • 返回具有这些值的用户对象

标签: laravel collections


【解决方案1】:

一个选项是在客户端模型上定义一个搜索范围

class Client extends Model
{
    public function scopeSearch($query, $searchTerm)
    {
        $query->where("name", "ilike", "%$searchTerm%")
            ->orWhere("surname", "ilike", "%$searchTerm%");
    }

    //rest of the code
}

然后在控制器方法中就可以使用作用域了

public function search_clients($names)
{
    $user = auth()->user();

    $all_clients = $user->clients()->search($names)->get();

    return $all_clients;
}

【讨论】:

  • 经过一些修改后它就可以工作了。谢谢你,如果我们有时间见面,你有我给你的啤酒! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 2016-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多