FleaPHP中关于关联表的问题 Print E-mail
User Rating: / 0
PoorBest 
网站建设 - 网站建设软件
Tuesday, 01 April 2008 02:56

$belongsTo

定义从属关联

1、外键放置在主表中; 
2、保存时不会自动更新关联表的记录; 
3、删除时也不会更新关联表的记录。

示例: 

多个文章都属于某一个栏目。

格式一: 


class Articles

{

     var $belongsTo = array(

         array(

             'tableClass'  => 'Columns',

             'foreignKey'  => 'column_id',

             'mappingName' => 'column'

         ),

     );

}

 

在上面的格式中,foreignKey 表示在当前表中用什么字段存储对关联表的主键引用。 
mappingName 表示在主表的返回结果中,以什么名字保存关联表的数据。 
如果不提供 mappingName 参数,则假定使用 tableClass。

格式二: 

class Articles

{

     var $belongsTo = 'Columns';

}

 

格式二是一种简化写法。foreignKey 字段名将和关联表的主键字段名相同。

============================

$hasMany

定义一对多关联

1、外键保存在关联表中; 
2、保存时自动更新关联表的记录; 
3、删除主表记录时自动删除关联记录。

示例: 
每个用户(user)有多张订单 order。

格式一: 

class Users

{

     var $hasMany = array(

         array(

             'tableClass'  => 'Orders',

             'foreignKey'  => 'user_id',

             'mappingName' => 'orders',

         ),

     );

}

 

在一对多关系中,当前表并不包含对关联表的主键引用。 
而是在关联表中保存对当前表的主键引用。
在上面的格式中,foreignKey 指示在关联表中用什么字段存储对当前表的主键引用。 
mappingName 表示在主表的返回结果中,以什么名字保存关联表的数据。 
如果不提供 mappingName 参数,则假定使用 tableClass。

格式二: 

class Users

{

     var $hasMany = 'Orders';

}

 

简化写法中,foreignKey 字段名将和当前表的主键字段名相同。

============================

$hasOne

定义一对一关联
1、外键放置在关联表中;
2、保存时如果有关联对象,则自动创建或更新关联表的记录; 
3、删除主表记录时自动删除关联记录。

示例: 
当前表为 users,用于存储用户账户。而每个用户账户有且只有一个对应的个人信息(profile)记录。

格式一: 

class Users

{

     var $hasOne = array(

         array(

             'tableClass'  => 'Profiles',

             'foreignKey'  => 'profile_id', 我觉得应该是user_id

             'mappingName' => 'profile',

         ),

     );

}

 

在上面的格式中,foreignKey 表示在关联表中用什么字段存储对主表的主键引用。  mappingName 表示在主表的返回结果中,以什么名字保存关联表的数据。  如果不提供 mappingName 参数,则假定使用 tableClass。

格式二: 

class Users

{

     var $hasOne = 'Profiles';

}

 

格式二是一种简化写法。foreignKey 字段名将和主表的主键字段名名相同。

============================


$manyToMany
       
定义多对多关联

1、外键保存在中间表里面;
2、保存时自动更新中间表; 
3、删除主表记录时自动删除中间表的相关记录。

示例: 
每个成员(member)可以拥有多个角色(role),而每个角色也可以指定给多个成员。

格式一: 

class Members

{

     var $manyToMany = array(

         array(

             'tableClass'      => 'Roles',

             'joinTable'       => 'member_roles',

             'foreignKey'      => 'member_id',

             'assocforeignKey' => 'role_id',

             'mappingName'     => 'roles',

         ),

     );

}

 

在多对多关系中,当前表并不包含对关联表的主键引用。 
而是在一个中间表里面保存对当前表和关联表的主键引用。
在上面的格式中,joinTable 表示中间表的名字。foreignKey 和 
assocforeignKey 分别表示在中间表里面用什么字段存储对主表和 
关联表主键字段的引用。

mappingName 表示在主表的返回结果中,以什么名字保存关联表的数据。 
如果不提供 mappingName 参数,则假定使用 tableClass。

格式二: 

class Members

{

     var $manyToMany = 'Roles';

}

 

简化写法中,foreignKey 字段名将和当前表的主键字段名相同。
assocforeignKey字段名称则和关联数据表的主键字段名相同。
而中间表名称将用FLEA_Db_TableDataGateway::getMidtableName() 方法计算。

 关联中必须设置的属性为:
        'name',             // 该连接的名字,用于检索指定的连接,同一个数据表的多个关联不能使用相同的名字。如果定义关联时没有指定名字,则以关联对象的 $mappingName 属性作为这个关联的名字。
        'tableClass',       // 关联的表数据入口对象名
        'mappingName',      // 字段映射名
    可选属性:
        'foreignKey',       //外键字段名
        'sort',             //对关联表进行查询时使用的排序参数
        'conditions',       //对关联表进行查询时使用的条件参数
        'fields',           //对关联表进行查询时要获取的关联表字段
        'limit',            //对关联表进行查询时限制查出的记录数
        'enabled',          //是否处理关联,设置为falses时,不处理该表入口的任何关联。enabled 的优先级高于 linkRead、linkCreate、linkUpdate 和 linkRemove。
        'countOnly',        //指示在查询关联表时是否仅仅统计记录数,而不实际查询数据
        'counterCache',     //将关联记录总数缓存到指定的字段,数据表中要建立相应的字段
        'linkRead',         //指示是否在主表读取记录时也读取该关联对应的关联表的记录,默认ture
        'linkCreate',       //指示是否在主表创建记录时也创建该关联对应的关联表的记录,默认ture
        'linkUpdate',       //指示是否在主表更新记录时也更新该关联对应的关联表的记录,默认ture
        'linkRemove',       //指示是否在主表删除记录时也删除该关联对应的关联表的记录,默认ture
        'linkRemoveFillValue',  //当删除主表记录而不删除关联表记录时,用什么值填充关联表记录的外键字段,默认0
        'saveAssocMethod',      //指示当保存关联数据时,采用何种方法,默认为 save,可以设置为 create、update 或 replace
FLEAPHP的关联可以使操作主表的时候方便地操作关联表,合理的使用会提高效率。

 

 


 

 
Banner

本站文章均来自网络为方便大家阅读之用,如有侵权,请联系我们,我们收到后立即删除,谢谢!另文章言论不代表本站观点。

 
上海定制公寓:瑞虹新城3期
瑞安房地产推出上海内环住宅瑞虹新城3期,该楼盘首推“定制公寓”概念,大胆借鉴国际前沿的设计理念,在上海北外滩打造精致优雅的国际现代化上海虹口高品质住宅小区。

娱乐竞拍:噢耶竞拍网
噢耶竞拍网提供低价竞拍、抢拍、竞猜,为您提供低价购物、娱乐购物以及娱乐竞猜,噢耶团队为您提供竭诚服务,开心又刺激的娱乐购物新体验就在噢耶竞拍网

zhishi123.com.cn广告