【问题标题】:How to fetch data from two tables using ORM in LIKE search using Laravel如何使用 Laravel 在 LIKE 搜索中使用 ORM 从两个表中获取数据
【发布时间】:2019-12-13 17:58:14
【问题描述】:

这是我的控制器代码:

public function searchUser(Request $request)
{
    $pram = $request->name;

    $data['users'] = User::whereHas('userBasicInfo', function ($query) use ($pram) {
        $query->where('first_name', 'like', '%' . $pram . '%')
            ->orWhere('middle_name', 'like', '%' . $pram . '%')
            ->orWhere('last_name', 'like', '%' . $pram . '%');
    })->with(['userBasicInfo' => function ($query) use ($pram) {
        $query->where('first_name', 'like', '%' . $pram . '%')
            ->orWhere('middle_name', 'like', '%' . $pram . '%')
            ->orWhere('last_name', 'like', '%' . $pram . '%');
    }])->get();

    return $data;
}

我与 userBasicInfo 有用户关系;我可以使用 first_name、middle_name 和 last_name 进行搜索,我的请求参数是 name。

现在我想用用户电子邮件进行搜索,并且还有一个请求参数是电子邮件,电子邮件在用户表中。

我如何也可以使用用户电子邮件进行搜索?

【问题讨论】:

    标签: php laravel search eloquent eloquent-relationship


    【解决方案1】:

    试试看

    $data['users'] = User::with('userBasicInfo')
                ->where('email', 'like', '%' . $pram . '%') //this is from use table
                ->orWhereHas('userBasicInfo', function($query) use($pram) {
                    //search in basic info table
                    $query->where('first_name', 'like', '%' . $pram . '%')
                        ->orWhere('middle_name', 'like', '%' . $pram . '%')
                        ->orWhere('last_name', 'like', '%' . $pram . '%');
                })
                ->get();
    

    您不需要从搜索表单中发送不同的值。单个值可以用作搜索值。

    【讨论】:

      猜你喜欢
      • 2012-11-03
      • 2020-06-14
      • 2020-03-19
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      • 2021-04-27
      • 2018-07-04
      • 1970-01-01
      相关资源
      最近更新 更多