Php Laravel雄辩:带连接的Whereor数组

Php Laravel雄辩:带连接的Whereor数组,php,laravel,eloquent,Php,Laravel,Eloquent,好的,我有这三张桌子 users table: id(int), name(varchar(20)), password(varchar(64)), created_at, updated_at friends table: id(int), targetID(int), ownerID(int), created_at, updated_at posts table: id(int), content(varchar(255)), ownerID(int), created_at, upd

好的,我有这三张桌子

users table:
id(int), name(varchar(20)), password(varchar(64)), created_at, updated_at

friends table:
id(int), targetID(int), ownerID(int), created_at, updated_at

posts table:
id(int), content(varchar(255)), ownerID(int), created_at, updated_at
我想查询用户自己和他的朋友发的帖子

在这个场景中,userid是1,即John

Users table data
1, John, xxxx, xxxx, xxxx
2, Mary, xxxx, xxxx, xxxx
3, Micheal, xxxx, xxxx, xxxx
4, Rick, xxxx, xxxx, xxxx
5, Sarah, xxxx, xxxx, xxxx

Friends table data
1, 2, 1, xxxx, xxxx
1, 3, 1, xxxx, xxxx
1, 4, 1, xxxx, xxxx

Posts table data
1, "Hi everyone", 1, xxxx, xxxx
2, "Good Morning", 1, xxxx, xxxx
3, "Welcome to our site", 2, xxxx, xxxx
4, "Quite a few members", 3, xxxx, xxxx
5, "haha", 5, xxxx, xxxx
从上面的场景中可以看到,我们的用户John是id为2,3,4的朋友,即Mary、Micheal和Rick

我想查询结果以显示John和他的朋友在ascending创建的order by_发布的帖子。当然,将有一个内部的join with users表来根据id获取用户名


我不确定嵌套查询的功能如何,因为我预计它将有where或ownerid=多个用户,因为一个用户有许多可以发表文章的朋友。

没关系,我找到了答案,这是供将来参考的

$posts = Post::where('ownerID', function($query){
                    $query->select('targetID')
                        ->from(with(new Friends)->getTable())
                        ->where('ownerID', Auth::user()->id);
                })
                ->orWhere('ownerID', Auth::user()->id)
                ->join('users', 'users.id', '=', 'posts.ownerID')
                ->orderBy('created_at', 'desc')
                ->get(array('posts.id', 'posts.content', 'users.name', 'posts.created_at'));