Laravel 类别映射关系
Laravel Categories Map Relationship
我有以下三个表,但我不知道如何在类别和其他数据类型之间建立关系,在本例中 'Page':
帖子:
post_id | title | slug
1 | Test | test
2 | Another test | another test
catgory_map:
id | category_id | referrer_id | category_map_type
1 | 2 | 1 | Post
2 | 3 | 2 | Post
3 | 2 | 9 | Page
类别
id | name
1 | Laravel
2 | Zend2
3 | Phalcon
所以每当我阅读一个类别时,我都希望能够做这样的事情
foreach($category->destinations) ...
到目前为止,我一直在尝试使用 hasManyThrough,但没有成功。
您拥有的是一个 many-to-many relation,对关系进行了一些额外的过滤(对于 category_map_type
)。试试这个:
Post 型号
public function categories(){
return $this->belongsToMany('Category', 'category_map', 'referrer_id')
->where('category_map_type', 'Post');
}
类别模型
public function posts(){
return $this->belongsToMany('Post', 'category_map', 'category_id', 'referrer_id')
->where('category_map_type', 'Post');
}
用法
$category = Category::find(1);
foreach($category->posts as $post){
// ...
}
(Post
也是如此)
我有以下三个表,但我不知道如何在类别和其他数据类型之间建立关系,在本例中 'Page':
帖子:
post_id | title | slug
1 | Test | test
2 | Another test | another test
catgory_map:
id | category_id | referrer_id | category_map_type
1 | 2 | 1 | Post
2 | 3 | 2 | Post
3 | 2 | 9 | Page
类别
id | name
1 | Laravel
2 | Zend2
3 | Phalcon
所以每当我阅读一个类别时,我都希望能够做这样的事情
foreach($category->destinations) ...
到目前为止,我一直在尝试使用 hasManyThrough,但没有成功。
您拥有的是一个 many-to-many relation,对关系进行了一些额外的过滤(对于 category_map_type
)。试试这个:
Post 型号
public function categories(){
return $this->belongsToMany('Category', 'category_map', 'referrer_id')
->where('category_map_type', 'Post');
}
类别模型
public function posts(){
return $this->belongsToMany('Post', 'category_map', 'category_id', 'referrer_id')
->where('category_map_type', 'Post');
}
用法
$category = Category::find(1);
foreach($category->posts as $post){
// ...
}
(Post
也是如此)