使用雄辯的力量。
創建模型文件(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