2014-01-30 53 views
0

我有麻煩搞清楚如何處理與「動態」的相關車型的典範。如何構建相關的模型在laravel 4

有一個名爲

集團在創建一組,你可以做一個GroupGameGroupGamer模型。這由組模型中的group_type指定。因此,類型1將與GroupGame相關,而2將是GroupGamer。

  1. 我應該在這裏做一個多態關係嗎?並且將GroupGame和GroupGamer的父級反轉爲共享Group表?或者讓Group成爲父組,並且它有一個相關的GroupGame或GroupGamer模型。

我還有其他的車型,如新聞,媒體等,這些我打算用它ID涉及到組模式。

要點:https://gist.github.com/intradox/55cebe406a0e5c5c69cb

只是不知道如何去的正確方法。希望這是有道理的。

+0

你的問題不清楚,你可以用一些代碼使它更清楚。 「創建組時可以做GroupGame或GroupGamer」是什麼意思? –

+0

這裏有一些示例代碼/類的要點。它有幫助嗎? https://gist.github.com/intradox/55cebe406a0e5c5c69cb – MCG

回答

1

關於你的問題多態性關係的第一部分是要走的路。創建遊戲玩家模型,他們都將需要「可分組」型,其中將由「groupable_type」字段來確定。在上述情況下使用3桌 - 爲玩家遊戲和聚集團表。

//example table structure 
    CREATE TABLE `group` (
     `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
     `title` varchar(255) NOT NULL, 
     `description` varchar(255) NOT NULL, 
     `groupable_id` int(11) unsigned NOT NULL, 
     `groupable_type` varchar(255) NOT NULL, 
     `created_at` datetime NOT NULL, 
     `updated_at` datetime NOT NULL, 
     PRIMARY KEY (`id`) 
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 

//app/models/Group.php 
class Group extends Eloquent { 

    protected $table = 'group'; 

    public function groupable() 
    { 
     return $this->morphTo(); 
    } 

} 

//app/model/Gamer.php 
class Gamer extends Eloquent 
{ 
    ... 

    public function group() 
    { 
     return $this->morphMany('Group', 'groupable'); 
    } 

    ... 
} 

//app/model/Game.php 
class Game extends Eloquent 
{ 
    ... 

    public function group() 
    { 
     return $this->morphMany('Group', 'groupable'); 
    } 

    ... 
} 

至於其他車型,這將涉及到集團這是相同的情況下 - 你可以工作的法寶,也使他們「可分組」,這將使你剛纔的所有組的詳細信息存儲在一個表。

//app/model/News.php 
class News extends Eloquent 
{ 
    ... 

    public function group() 
    { 
     return $this->morphMany('Group', 'groupable'); 
    } 

    ... 
} 
+0

然而,我對morphMany感到困惑。每組只有1場比賽或1場比賽。基本上它是一個組,但取決於類型將有一個遊戲玩家或遊戲的附加屬性。我的理解是一個多態性會很好,當你有一個單一的遊戲與多個組,然後你打電話給一個遊戲,並提出所有它的組。但是這是1:1。 – MCG

+0

看看這篇文章的基本多態性用法的一個典型的例子:http://maxoffsky.com/code-blog/using-polymorphic-relationships-of-laravel-for-seo-content/ – Gadoma

+0

感謝您的幫助。我分裂成一個單獨的問題就抓住數據,我似乎不能拉我的相關模型的數據:http://stackoverflow.com/questions/21487145/laravel-eager-loading-polymorphic-relationships – MCG