cakephp and relationships



我有一个关于mongodb, model cakephp和关系的问题。

我将创建以下关系:

User -> hasMany -> City
City -> belongsTo -> User

在MongoDB中,我有两个表:

用户

在cakephp,我有2个模型:User.php

类用户扩展模型{
public $name = 'User';
public $actsAs = array('Containable');
public $hasMany = array ('City');
. .
}

:City.php

类City扩展模型{
public $name = 'City';
public $actsAs = array('Containable');
public $belongsTo = array('User');
..}

在我的控制器中,我使用:

$user = $this-> user ->find('all');

但它不起作用。在sql dump中,cakephp只对table用户使用查找。为什么?我哪里错了?

我通常将递归设置为-1并在应用模型中包含,所以它适用于你创建的所有模型,除非你特别重写。

class AppModel extends Model {
    public $actsAs = array('Containable');
    public $recursive = -1;
}

您的关系很好,尽管我通常添加className和foreignKey只是为了安全和清楚。在你的控制器中,你应该这样做:

$users = $this->User->find('all', array(
    'contain' => array(
        'City'
    )
));

递归将在默认情况下阻止包含任何相关的记录,这很好,因为有时您不需要递归数据,而额外的数据将有助于降低应用程序的速度。

下一个添加包含到你的查找调用可能看起来像一件苦差事,但它将是清晰和简洁的你正在查询,任何第三方开发人员将完全理解你在做什么,如果他们知道如何使用蛋糕。

最新更新