MongoDB 和 CakePHP 模型关联

Posted

技术标签:

【中文标题】MongoDB 和 CakePHP 模型关联【英文标题】:MongoDB and CakePHP Model associations 【发布时间】:2010-07-05 10:55:12 【问题描述】:

我正在尝试制作一个包含在那场比赛中排队的球员的比赛模型。所以每场比赛有很多玩家,每个球员都有很多比赛。

match = 
 '_id' : ObjectID('978tqwbi9873gofiu'),
 'home' : 'Argentina',
 'away' : 'Brazil',
 'lineup-home' : [
   'name' : 'Lionel Messi',
    'goals' : '2',
    'timeon' : 30
   ,
   'name' : 'Diego Maradonna',
    'goals' : '0',
    'timeon' : 0
   ,
   'name' : 'Sergio Aguero',
    'goals' : '0',
    'timeon' : 0
   
 ]
   

如何在我的 Cakephp 模型中添加这些 'lineup-home' 关系以使用我的 mongoDB?这就是我的模型的样子...

    class Match extends AppModel 
    //var $useDbConfig = 'mongo';
    var $mongoSchema = array(
        'home' => array('type' => 'string'),
        'away' => array('type' => 'string'),
        'lineup-home' => ???
    );

谢谢。

【问题讨论】:

你有没有得到解决方案,我也有同样的问题? 【参考方案1】:

我认为使用 'lineup-home' => 'array' 可以解决问题..

【讨论】:

你确定吗?它看起来有些奇怪,而且似乎不起作用: var $mongoSchema = array( 'home' => array('type' => 'string'), 'away' => array('type' => 'string '), 'lineup-home' => array('type' => 'array') );【参考方案2】:

然后呢

var $mongoSchema = array(
        'home' => array('type' => 'string'),
        'away' => array('type' => 'string'),
        'lineup-home' => array(
           'name' => array('type' => 'string'),
           'goals' => array('type' => 'string'),
           'timeon' => array('type' => 'integer'),
        )
    );

【讨论】:

【参考方案3】:

您可以使用此架构:

var $mongoSchema = array(
        'home' => array('type' => 'string'),
        'away' => array('type' => 'string'),
        'lineup-home' => array(
           array(
               'name' => array('type' => 'string'),
               'goals' => array('type' => 'string'),
               'timeon' => array('type' => 'integer'),
           )
        )
    );

【讨论】:

以上是关于MongoDB 和 CakePHP 模型关联的主要内容,如果未能解决你的问题,请参考以下文章

CakePHP 2.1 - 模型关联 - 保存和查找

CakePHP 模型关联深层模型包含

CakePHP - 在模型中查找没有 hasMany 关系的 hasMany 关联?

cakephp 中的正确模型关联

CakePHP 保存非常深的关联模型

CakePHP 3:保存关联模型失败