По сути, у нас есть общий запрос, который отлично выполняет именно то, что ему нужно, проблема в том, что мне нужно иметь возможность фильтровать вводимые пользователем данные в таблице ответов.
$profiles = User::with('photos', 'answers')
->where('id', '!=', $user_id)
->where('gender', $gender)
->where('location', $location)
->where('deleted_at', null)
->whereNotExists(function($query) use ($user_id)
{
$query->select(DB::raw('user_id1, user_id2'))
->from('approves')
->whereRaw("users.id = approves.user_id2 AND approves.user_id1 = '$user_id'");
})
->whereNotExists(function($query) use ($user_id)
{
$query->select(DB::raw('user_id1, user_id2'))
->from('likes')
->whereRaw("users.id = likes.user_id2 AND likes.user_id1 = '$user_id'");
})
->take(15)
->get();
При этом для изменения запроса используется несколько пользовательских входных данных, теперь пользователь также может фильтровать по множеству других критериев по ответам профиля пользователя, и это то, где я нахожусь. застрял.
Таблица ответов имеет следующий формат: id, user_id, query_id, ответ должен быть таким, чтобы можно было расширить ее в дальнейшем.
Кто-нибудь знает, как я мог бы фильтровать это с помощью различных других входных данных, например, если пользователь фильтровал вопрос по идентификатору вопроса «1» и отвечал «потрясающе». Примечательно, что существует несколько входных данных, а не только один для сравнения, и сравнивать их нужно только в том случае, если они были введены.
Любые мысли или советы приветствуются
Изменить:
id | user_id | question_id | answer
1 | 2 | 1 | dad
2 | 2 | 2 | lion
3 | 2 | 3 | 5
Подробнее здесь: https://stackoverflow.com/questions/254 ... -filtering
Мобильная версия