我的博客laravel项目有很多Posts,每个Posts属于很多标签。现在我想检索所有的博客和他们的标签,并回应每个标签。
这是我写的代码。有什么更好的方法吗?
$posts = Post::with('tags')->get();
foreach ($posts as $post) {
foreach ($post->tags as $tag) {
echo "<pre> $tag->name </pre>";
}
}
die();
你可以用以下方法获取所有标签 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视图与逻辑合并。