我有3张桌子。
1.posts
2.categories
3.category_post。
我的帖子表格在这里:
+------------+------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------------------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| title | varchar(255) | NO | | NULL | |
| slug | varchar(255) | NO | | NULL | |
| reporter | varchar(255) | NO | | NULL | |
| meta | varchar(255) | NO | | 0 | |
| body | text | NO | | NULL | |
| image | varchar(255) | NO | | 0 | |
| top | tinyint(1) | NO | | 0 | |
| post_count | int(11) | NO | | 0 | |
| created_at | timestamp | NO | | 0000-00-00 00:00:00 | |
| updated_at | timestamp | NO | | 0000-00-00 00:00:00 | |
+------------+------------------+------+-----+---------------------+----------------+
我的分类表在这里:
+---------------+------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------------+------+-----+---------------------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
| category_slug | varchar(255) | NO | | NULL | |
| parrent_id | int(11) | NO | | 0 | |
| created_at | timestamp | NO | | 0000-00-00 00:00:00 | |
| updated_at | timestamp | NO | | 0000-00-00 00:00:00 | |
+---------------+------------------+------+-----+---------------------+----------------+
我的category_post表:
+-------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| category_id | int(10) unsigned | NO | MUL | NULL | |
| post_id | int(10) unsigned | NO | MUL | NULL | |
+-------------+------------------+------+-----+---------+----------------+
我可以创建选择了多个类别的帖子。但是,当我想按类别显示帖子时,我无法访问类别表。这意味着,我想查看每个帖子的类别名称。
这是我的模特:
在分类模型中:
public function posts()
{
return $this->belongsToMany('Post');
}
在帖子模型中:
public function categories()
{
return $this->belongsToMany('Category');
}
我的查询帮助程序功能适用于按类别发布:
public static function cat_post($category, $limit, $top)
{
$posts = Post::whereHas('categories', function($q) use ($category, $top)
{
$q->where('name', 'like', $category);
$q->where('top', 'like', $top);
})->with('categories')->take($limit)->orderBy('created_at', 'DESC')->get();
return $posts;
}
我可以查看所有帖子数据。但类别名称不是。
我的帖子循环:
<?php $headline = Helper::head_post(10, 1); ?>
@foreach ($headline as $post)
<li><a href="">{{ $post->title }}</a></li>
@endforeach
当我尝试此类别名称不起作用时:
@foreach ($headline as $post)
<li><a href="">{{ $post->categories->name }}</a></li>
@endforeach
请帮帮我。
答案 0 :(得分:0)
因为它是多对多关系$post->categories->name
不起作用。它不知道你想要哪个类别(中的许多类别)。
因此,您可以使用$post->categories()->first()->name
来获取第一个类别的名称或循环它们以获取所有类别的名称。