Laravel - 仅向作为线程

时间:2016-04-13 13:28:23

标签: php mysql laravel

用户只能查看和发布用户是“收件人”的帖子。我在下面详细解释了它。

我的桌子结构:

threads表:user_idsubjectrecipients(包含序列化的用户数组)

messages表:thread_iduser_idbody

participants表:thread_iduser_idread_atdeleted_at

所以我想要的是一种显示用户是其接收者的所有线程的方法。如果他们删除了线程(每次创建一个线程,每个收件人都会填充参与者表)。例如,如果一个线程有3个收件人,那么将在participants表中用他们的用户ID创建3行。并且他们可以选择删除线程,以便在查看“属于”它们的所有线程时看不到它。

我不知道如何找到向线程收件人用户显示线程的方法。请帮我解决这个问题。谢谢!

我尝试了以下代码,但没有运气。

    $threads = Thread::all();
    $participant = Participant::where(['user_id' => uid()])->get();
    foreach ($threads as $thread) {
       $recipients = unserialize($thread->recipients);
        if (in_array(uid(), $recipients) || $thread->user_id == uid()) {
           $messages = (object)Participant::where(['user_id' => uid(), 'thread_id' => $thread->id])->paginate(10);
        }
    }

演示:

已创建一个帖子:

收件人的user_id是:4,7,8。

threads表:

id  | user_id | subject | recipients
-------------------------------------------------------------------
1   |       1 | Hello   | a:1:{s:7:"user_id";a:3:{i:0;i:4;i:1;i:7;i:2;i:8;}}

messages表:

id  | user_id | thread_id | body
--------------------------------------------
1   |       1 |         1 | How you doing?

participants表:

id  | user_id | thread_id | read_at
--------------------------------------------
1   |       1 |         1 | 2016-04-13 00:03:23
--------------------------------------------
1   |       4 |         1 | NULL
--------------------------------------------
1   |       7 |         1 | NULL
--------------------------------------------
1   |       8 |         1 | NULL

0 个答案:

没有答案