html5关联:连接模型,一个新的东西,呵呵

CakePHP最强大的特性之一是能够提供的链接关系映射模型。在CakePHP中,模型通过协会之间的联系。


定义在应用程序中不同对象之间的关系应该是一个自然的过程。例如:在配方数据库,导致可能会有很多评论,评论有一个作者和作者可能会有很多食谱。定义这些关系的工作方式允许您以一种直观而强大的方式访问您的数据。


这里的目的是向您展示如何计划,定义,和利用在CakePHP模型之间的关联。


数据可以来自各种来源,最常见的形式存储在web应用程序是一个关系数据库。

关系类型


四个协会在CakePHP类型:具,hasMany,belongsTo,hasAndBelongsToMany(HABTM)。


协会是由创建一个类变量命名的协会定义。类变量有时可以简单如一个字符串,但可以完成作为一个多维数组用于定义关联的细节

class User extends AppModel {
    public $hasOne = 'Profile';
    public $hasMany = array(
        'Recipe' => array(
            'className' => 'Recipe',
            'conditions' => array('Recipe.approved' => '1'),
            'order' => 'Recipe.created DESC'
        )
    );
}
在上面的例子中,这个词的第一个实例“Recipe”是所谓的“Alias”。这是一个标识符,可以是任何你选择的关系。通常情况下,你会选择相同的名称作为它引用的类。然而,别名为每一个应用广泛的模型必须是惟一的。例如是适当的:

class User extends AppModel {
    public $hasMany = array(
        'MyRecipe' => array(
            'className' => 'Recipe',
        )
    );
    public $hasAndBelongsToMany = array(
        'MemberOf' => array(
            'className' => 'Group',
        )
    );
}

class Group extends AppModel {
    public $hasMany = array(
        'MyRecipe' => array(
            'className' => 'Recipe',
        )
    );
    public $hasAndBelongsToMany = array(
        'Member' => array(
            'className' => 'User',
        )
    );
}

但以下不会在任何情况下工作得很好:

class User extends AppModel {
    public $hasMany = array(
        'MyRecipe' => array(
            'className' => 'Recipe',
        )
    );
    public $hasAndBelongsToMany = array(
        'Member' => array(
            'className' => 'Group',
        )
    );
}

class Group extends AppModel {
    public $hasMany = array(
        'MyRecipe' => array(
            'className' => 'Recipe',
        )
    );
    public $hasAndBelongsToMany = array(
        'Member' => array(
            'className' => 'User',
        )
    );
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值