【发布时间】:2014-04-05 14:26:02
【问题描述】:
我很难想出好的标题,但我希望这能解释。
帖子表
+----+---------+-----------------+
| id | title | text |
+----+---------+-----------------+
| 1 | Title 1 | This is example |
| 2 | Title 2 | This is example |
| 3 | Title 3 | This is example |
+----+---------+-----------------+
标签表
+----+--------+
| id | tag |
+----+--------+
| 1 | jQuery |
| 2 | PHP |
| 3 | Stack |
+----+--------+
分类表
+----+------------+
| id | category |
+----+------------+
| 1 | Category 1 |
| 2 | Category 2 |
| 3 | Category 3 |
+----+------------+
发布标签关系表(与类别相同)
+---------+--------+
| post_id | tag_id |
+---------+--------+
| 1 | 1 |
| 1 | 2 |
| 2 | 3 |
+---------+--------+
这是我想在我的视图中看到的结果:
+---------+------------------+--------------------+------------+
| Title | Text | Tags | Categories |
+---------+------------------+--------------------+------------+
| Title 1 | This is example | jQuery, PHP | Category 2 |
| Title 2 | This is example | Stack | Category 1 |
| Title 3 | This is example | jQuery, PHP, Stack | Category 1 |
+---------+------------------+--------------------+------------+
在我的控制器中,我有
public function index()
{
$posts = Posts::orderBy('title', 'ASC')->get();
return View::make('posts', array(
'posts' => $posts)
);
}
在我看来,我可以使用 foreach 循环列出所有帖子
@foreach ($posts as $post)
Title: {{ $post->title }}
Text: {{ $post->text }}
Tags: ?
Categories: ?
@endforeach
问题是在 foreach 循环中获取每个帖子的标签和类别的最佳方法是什么?
【问题讨论】:
-
您是否在模型上建立了关系,或者您不了解主题并需要完整的解决方案?
-
我阅读了 Laravel Eloquent ORM 教程并按照建议建立了关系,但我不确定是否符合我的需要,因为在这种情况下输出是:帖子标题和文本列表为很多次,因为有不同的标签。在这种情况下,我需要 foreach 循环用于帖子,并在自己的 foreach 循环中用于标签和类别?
-
当然,您会获得包含相关标签集合的帖子集合,以及相关类别(如果也是多对多)/类别模型(如果是一对多)的集合。也阅读有关预加载的内容,因为现在您在每个循环代表中运行查询,即所谓的 n+1 问题
-
google "laravel pivot table", "Jeffrey Way's generator tool" 查找数据透视生成器及其详细信息,laravel 的官方文档中的关系,以及 n+1 问题...这些类型的在 laravel 中关系很容易管理
标签: database laravel foreach tags