Php Laravel WHERHAS()未按where子句正确筛选

Php Laravel WHERHAS()未按where子句正确筛选,php,laravel,Php,Laravel,我正在尝试按姓名搜索玩家,按姓名/电子邮件地址搜索他们的父母。出于某种原因,下面的语句正在拉所有玩家,不管我输入的搜索词是什么 在下面的示例中,“guardian”引用了users表 $players = Player::where('first_name', 'LIKE', '%'.Input::get('q').'%') ->orWhere('last_name', 'LIKE', '%'.Input::get('q').'%') ->or

我正在尝试按姓名搜索玩家,按姓名/电子邮件地址搜索他们的父母。出于某种原因,下面的语句正在拉所有玩家,不管我输入的搜索词是什么

在下面的示例中,“guardian”引用了
users

    $players = Player::where('first_name', 'LIKE', '%'.Input::get('q').'%')
        ->orWhere('last_name', 'LIKE', '%'.Input::get('q').'%')
        ->orWhereHas('guardian', function ($q) {
            $q->where('users.first_name', 'LIKE', '%'.Input::get('q').'%')
                ->orWhere('users.last_name', 'LIKE', '%'.Input::get('q').'%')
                ->orWhere('email', 'LIKE', '%'.Input::get('q').'%');
        })
        ->with('guardian')
        ->orderBy('last_name', 'ASC')
        ->orderBy('first_name', 'ASC')
        ->paginate(25);
也许这只是漫长的一天。。。但我想我错过了什么

例如:

我认为应该在where语句之前调用with()方法。 也许是这样的:

     $players = Player::with('guardian')
                ->where('first_name', 'LIKE', '%'.Input::get('q').'%')
                ->orWhere('last_name', 'LIKE', '%'.Input::get('q').'%')
                ->orWhereHas('guardian', function ($q) {
                    $q->where('users.first_name', 'LIKE', '%'.Input::get('q').'%')
                        ->orWhere('users.last_name', 'LIKE', '%'.Input::get('q').'%')
                        ->orWhere('email', 'LIKE', '%'.Input::get('q').'%');
                })
                ->orderBy('last_name', 'ASC')
                ->orderBy('first_name', 'ASC')
                ->paginate(25);