Thinkphp数据模型一对多关联和多对多关联

HAS_MANY 关联表示当前模型拥有多个子对象,例如每个用户有多篇文章,我们可以这样来定义

'Article' => array(
    'mapping_type'  => self::HAS_MANY,
    'class_name'    => 'Article',
    'foreign_key'   => 'userId',
    'mapping_name'  => 'articles',
    'mapping_order' => 'create_time desc',
    // 定义更多的关联属性
    ……
)

MANY_TO_MANY 关联表示当前模型可以属于多个对象,而父对象则可能包含有多个子对象,通常两者之间需要一个中间表类约束和关联。例如每个用户可以属于多个组,每个组可以有多个用户:

'Group' => array(
    'mapping_type'      =>  self::MANY_TO_MANY,
    'class_name'        =>  'Group',
    'mapping_name'      =>  'groups',
    'foreign_key'       =>  'userId',
    'relation_foreign_key'  =>  'groupId',
    'relation_table'    =>  'think_group_user' //此处应显式定义中间表名称,且不能使用C函数读取表前缀
    )

由于性能问题,新版取消了自动关联查询机制,而统一使用relation方法进行关联操作,relation方法不但可以启用关联还可以控制局部关联操作,实现了关联操作一切尽在掌握之中。

文章来自 www.huthon.com

你可能感兴趣的:(Thinkphp)