如何在Laravel中执行复杂的SQL查询?

如何在Laravel中执行复杂的SQL查询?,laravel,laravel-5.4,Laravel,Laravel 5.4,我使用三个实体:user、categories、user\u categories、articles\u categories 每个用户都可以订阅某些类别,因此表user\u categories将为: user_category id user_id category_id 1 1 1 articles_category id article_id category_id 1 1 1 articles id n

我使用三个实体:
user、categories、user\u categories、articles\u categories

每个用户都可以订阅某些类别,因此表
user\u categories
将为:

user_category
    id user_id category_id
    1  1       1

articles_category
    id article_id  category_id
    1  1           1


articles
    id name
    1  Bla
因此,我需要选择所有
文章
,其中
文章类别
,它们对应于表
用户类别
中所包含的用户类别

我试过这个:

Articles::with("categories")->with("publisher.categories")->where("user_id", 1);

public function categories()
    {
        return $this->hasMany("App\ArticlesCategory", "article_id", "id");
    }

public function publisher()
    {
        return $this->hasOne("App\User", "id", "user_id");
    }
我有一些想法

第一次连接表时:

user\u categories
带有
articeles\u categories
按条件:

user_categories.category_id = articeles_category.id AND user_categories.user_id = 4
第二个是:

从与上一个查询关联的文章中选择文章

Third is

要通过
用户id

创建全局
where
,如果您的模型从用户链接到类别再链接到文章,您可以执行以下操作:

$categories = $user->categories()->with('articles')->get();
然后将它们分组到同一集合下(如果需要):

或者,如果您没有用户实例:

$user = User::find($user_id)->with('categories.articles').->get();

请参阅急切加载:

您是否使用Elount?是的,我使用它简而言之,您希望通过类别从用户处获取文章?是的,我需要获取关于该用户子组的文章我需要在模型关系上执行此操作SSO,如果表中的skp应该是:
articles(“categories”)->where_in(“category_id”,数组(“类别\来自加入文章的id。类别。用户\类别”))
我的答案使用了雄辩关系,假设你已经在用户上设置了类别关系,在类别上设置了文章关系。如果你不想使用雄辩关系,你只需要手动加入。那么,在加入文章之后,你是否先从表
User
中执行此操作?似乎我需要使用
有很多贯穿的内容以后给你,不要在电脑前
$user = User::find($user_id)->with('categories.articles').->get();