使用雄辩的力量。
创建模型文件(Post.php
,Video.php
, Tag.php
)。
post.php中
class Post extends Eloquent {
public function tags()
{
return $this->belongsToMany('Tag');
}
}
Video.php
class Video extends Eloquent {
public function tags()
{
return $this->belongsToMany('Tag');
}
}
Tag.php
class Post extends Eloquent {
public function posts()
{
return $this->belongsToMany('Post');
}
public function videos()
{
return $this->belongsToMany('Video');
}
}
更多关于这一点,你可以在Laravel阅读Eloquent Relationships文档。
下,而不是taggeables
创建两个数据透视表:第一post_tag
与领域tag_id
和post_id
上岗与标签相连,和第二tag_video
与场video_id
和tag_id
将视频与标签连接。
最后,把所有的帖子和视频同一个标签的ID(假设$ TAG_ID),你可以做这样的事情(如果你的Post.php
模式真的包含tags()
法):
职位:
$posts = Post::whereHas(`tags`, function($q) {
$q->where('id', '=', $this->id);
})->orderBy('name', 'ASC')->get();
对于视频:
$videos = Video::whereHas(`tags`, function($q) {
$q->where('id', '=', $this->id);
})->orderBy('name', 'ASC')->get();
感谢您的回答,但在我的问题中,我说我建立了多对多的多态关系,我不想改变这种结构。我自己回答了这个问题。 – thangngoc89 2015-02-12 16:01:50