[英]How to structure related models in laravel 4
我在弄清楚如何使用“动态”相关模型处理模型时遇到了麻烦。
有一个名为Group的模型
创建组时,可以执行GroupGame或GroupGamer 。 这由Group模型中的group_type指定。 因此,类型1将与GroupGame有关,而类型2将是GroupGamer。
我还有其他模型,例如“新闻”,“媒体”等,我计划通过使用ID与Group模型相关联。
要点: https : //gist.github.com/intradox/55cebe406a0e5c5c69cb
只是不确定如何以正确的方式进行操作。 希望这是有道理的。
关于问题的第一部分,多态关系是解决之道。 您创建了Game和Gamer模型,它们都将需要是“可分组的”类型,这将由“ groupable_type”字段确定。 在上述情况下,您使用3个表-用于Gamer , Game和poly Group表。
//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');
}
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.