關於你的問題多態性關係的第一部分是要走的路。創建遊戲和玩家模型,他們都將需要「可分組」型,其中將由「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');
}
...
}
你的問題不清楚,你可以用一些代碼使它更清楚。 「創建組時可以做GroupGame或GroupGamer」是什麼意思? –
這裏有一些示例代碼/類的要點。它有幫助嗎? https://gist.github.com/intradox/55cebe406a0e5c5c69cb – MCG