繁体   English   中英

如何在Laravel 4中构建相关模型

[英]How to structure related models in laravel 4

我在弄清楚如何使用“动态”相关模型处理模型时遇到了麻烦。

有一个名为Group的模型

创建组时,可以执行GroupGameGroupGamer 这由Group模型中的group_type指定。 因此,类型1将与GroupGame有关,而类型2将是GroupGamer。

  1. 我应该在这里建立多态关系吗? 并将父级反向共享组表的GroupGame和GroupGamer? 或让Group成为父项,并且它具有相关的GroupGame或GroupGamer模型。

我还有其他模型,例如“新闻”,“媒体”等,我计划通过使用ID与Group模型相关联。

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

只是不确定如何以正确的方式进行操作。 希望这是有道理的。

关于问题的第一部分,多态关系是解决之道。 您创建了GameGamer模型,它们都将需要是“可分组的”类型,这将由“ groupable_type”字段确定。 在上述情况下,您使用3个表-用于GamerGame和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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM