急于加载在许多对许多在laravel雄辩关系(检索所有帖子与他们分配的标签)。

问题描述 投票:0回答:1

我的博客laravel项目有很多Posts,每个Posts属于很多标签。现在我想检索所有的博客和他们的标签,并回应每个标签。

这是我写的代码。有什么更好的方法吗?

$posts = Post::with('tags')->get();

    foreach ($posts as $post) {
        foreach ($post->tags as $tag) {
            echo "<pre> $tag->name </pre>";
        }
    }
    die();
php laravel eloquent many-to-many
1个回答
0
投票

你可以用以下方法获取所有标签 Eager loading 就像你在代码中做的那样。

请看一下 https:/laravel.comdocs7.xeloquent-relationships#eager-loading。

$posts = App\Post::with('tags:name')->get();

foreach ($posts as $post) {
    foreach ($post->tags as $tag) {
        echo "<pre> $tag->name </pre>";
    }
}

这是正确的解决方案。

你甚至可以用 DB 查询,以获得更快的速度,但可能你的方式就够了。

$posts = App\Post::all()->pluck('id');

return DB::select('SELECT name FROM tags WHERE id in (' . implode(',', $posts) . ')');

最后的提示。 不要将HTML视图与逻辑合并。

© www.soinside.com 2019 - 2024. All rights reserved.