Запрос не просто получает конкретный идентификатор - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть запрос, чтобы получить все зарегистрированные действия в папке.

Идентификатор в этом случае - 2. Я пытаюсь получить только записи на 2, но, как и везде, для результатов поиска,он получает всю активность по всем папкам для этого пользователя.

Есть идеи, как исправить этот запрос?

$filtertext = $request->filter;
    $data = Activity::select('activity_log.*', 'users.first_name', 'users.last_name', 'users.email')
        ->join('users', 'users.id', '=', 'activity_log.causer_id')
        ->where('subject_id', '=', $id)
        ->where('subject_type', '=', 'App\Models\Node')
        ->orWhere('first_name', 'like', '%' . $filtertext . '%')
        ->orWhere('last_name', 'like', '%' . $filtertext . '%')
        ->orWhere('email', 'like', '%' . $filtertext . '%')
        ->with([
            'subject' => function ($q) {
                $q->whereNull('deleted_at');
            }
        ])
        ->orderBy('created_at', 'desc')
        ->paginate(12);

1 Ответ

0 голосов
/ 30 ноября 2018

Если у вас есть группа orwhere в сочетании с обычными where, вы должны поместить их в свое собственное закрытие, чтобы построитель запросов знал, что их нужно видеть вместе, помимо других whereх.

$filtertext = $request->filter;
$data = Activity::select('activity_log.*', 'users.first_name', 'users.last_name', 'users.email')
    ->join('users', 'users.id', '=', 'activity_log.causer_id')
    ->where('subject_id', '=', $id)
    ->where('subject_type', '=', 'App\Models\Node')
    ->where(function ($query) use ($filtertext) {
        $query
            ->orWhere('first_name', 'like', '%' . $filtertext . '%')
            ->orWhere('last_name', 'like', '%' . $filtertext . '%')
            ->orWhere('email', 'like', '%' . $filtertext . '%');
    })
    ->with([
        'subject' => function ($q) {
            $q->whereNull('deleted_at');
        }
    ])
    ->orderBy('created_at', 'desc')
    ->paginate(12);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...