申し訳ありませんが、これは説明するのが少し複雑ですが、基本的には:スレッドテーブルには多くのメッセージがあります。スレッドは、これらの列があります。Laravel - "WhereHas"クエリ:ユーザーごとに異なる
id, deleted_at_sender, deleted_at_receiver_ sender_id, receiver_id
メッセージテーブルは、私は、スレッドが送信されたユーザーによって削除されていないスレッドを取得しようとしています、これらの列の私のクエリで
thread_id, user_id, body
を持っていますに。たとえば、user1
がuser2
にメッセージを送信した場合、user2
はそれを削除でき、表示することはできませんが、user1
はまだ表示されます。
(一種の)私はすでに設定そのクエリを持っているし、それが完璧に動作
$messages = Message::select('*', \DB::raw('max(created_at) as created_at'))
->where($get_user_id, uid())
->groupBy('thread_id')
->orderBy('created_at', 'desc')
->whereHas('thread', function ($q) {
$q->whereNull('deleted_at_receiver');
})
->paginate(10);
どこに求めることができる問題がありますか?この行は$q->whereNull('deleted_at_receiver');
です。現在ログインしているユーザーがメールの受信者か送信者かによって、実際には入力できません。今のところ、この行にはdeleted_at_receiver
という列がハードコードされています。
スレッドが現在ログインしているユーザーによって作成されたかどうかを判断し、ユーザーが送信者か受信者かによって、$q->whereNull('deleted_at_receiver');
を変更する方法を見つけ出す必要があります。
ご協力いただきまして誠にありがとうございます。私は運がないとこれを把握しようと2日以上過ごしました。みんな助けてください。
ありがとうございます。