猿问

在 laravel 雄辩的关系中渴望加载多对多(检索所有带有分配标签的帖子)

我的博客 laravel 项目有很多帖子,每个帖子都属于很多标签。现在我想检索所有博客及其标签并回显每个标签。


这是我写的代码。有没有更好的办法?


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


    foreach ($posts as $post) {

        foreach ($post->tags as $tag) {

            echo "<pre> $tag->name </pre>";

        }

    }

    die();


不负相思意
浏览 94回答 1
1回答

米琪卡哇伊

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 视图与逻辑合并。
随时随地看视频慕课网APP
我要回答