Я довольно новичок в laravel и красноречивее.Laravel eloquent query right data
У меня есть 2 таблицы threads
и messages
вы можете увидеть структуру в ссылках ниже:
нитей
сообщения
Теперь мои цели является запрашивать только потоки из потоков таблицы, которые имеют тот же user_id в таблице сообщений, что и вошедший в систему пользователь.
Есть ли способ сделать это посредством красноречия или мне нужно написать запрос для этого?
я в настоящее время получают все нити так:
$thread = Thread::findOrFail($id);
Но это дает проблемы с безопасностью, так как вы можете пойти в любой поток, если вы измените идентификатор в моем маршруте.
EDIT
Моя текущая шоу функция:
public function show($id)
{
$currentUserId = Auth::user()->id;
$threads = Thread::forUser($currentUserId)->latest('updated_at')->get();
try {
$thread = Thread::findOrFail($id);
} catch (ModelNotFoundException $e) {
Session::flash('error_message', 'Oops, not found.');
return redirect('messages');
}
if(array_has($threads, $thread)){
$users = User::whereNotIn('id', $thread->participantsUserIds($currentUserId))->get();
$thread->markAsRead($currentUserId);
return view('messenger.show', compact('thread', 'users'));
}else{
Session::flash('error_message', 'Oops, not found.');
return redirect('messages');
}
}
Мне нужен способ, чтобы проверить, если $ нить внутри $ нитей.
Что вы имеете в виду ниткой? – Codearts
В потоке вы можете иметь несколько сообщений. Так, например, я создаю поток «обсуждение1», и в этом обсуждении может быть несколько сообщений. Поток похож на dm между двумя пользователями. – Cruzito
@Codearts Надеюсь, это имеет смысл, что я пытаюсь сказать :) – Cruzito