【问题标题】:cake php use of table relationscake php 使用表关系
【发布时间】:2010-02-06 09:12:37
【问题描述】:

像这样的创建关系有什么用处

 var $belongsTo = array(
        'UserType' => array(
            'className' => 'UserType',
            'foreignKey' => 'user_type_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        )
    );
    //The Associations below have been created with all possible keys, those that are not needed can be removed
    var $hasMany = array(
        'UserOpenid' => array(
            'className' => 'UserOpenid',
            'foreignKey' => 'user_id',
            'dependent' => true)
);

如果我在“hasMany”中添加一个以“belongsTo”意义创建的表会怎样? 发生任何错误。 cake 如何使用模型中指定的关系?

【问题讨论】:

  • 好的,如果我指定这样的帖子 hasMany users 我无法获取用户名 rite?
  • 我认为你是在谈论用户有很多帖子。那么在那种情况下,当您选择特定用户时,您还将获得他的所有 cmets。在 Cookbook book.cakephp.org/view/78/Associations-Linking-Models-Together 中了解模型关联
  • 你能把你的代码示例放在代码标签中吗?它会更容易阅读。
  • 这不应该是一个答案,而是一个评论。正如 Paweł 所说,阅读 cakebook 上的关系是个好主意,因为这是 Cake 的主要功能之一。此外,可包含的行为 (book.cakephp.org/view/474/Containable) 可能对您来说很有趣另外:如果您发现有用的答案,您可能希望使用 SO-tools 奖励此人

标签: database cakephp model controller relationship


【解决方案1】:

通过将模型关联在一起,您可以告诉 CakePHP 当您使用 find() 函数时要从数据库中获取什么。示例:

posts BelongsTo users = 当您检索帖子时,您还将获得有关该帖子所属用户的数据(posts.user_id = users.id)。

【讨论】:

    【解决方案2】:

    除了 Paweł 的回答:

    “belongsTo”、“hasMany”等只是为了反映数据库的设计方式以及表之间的相互关系而选择的术语,这些术语决定了如何检索数据。

    • belongsTo 表示一对多关系,“归属”模型位于“多”端
    • hasMany 表示一对多关系的另一端
    • hasOne 表示一对一的关系
    • hasAndBelongsToMany 表示多对多关系

    具体关系决定了哪个表持有哪个外键,以及如何JOIN这些表自动检索数据。如果您没有这方面的经验,请查看Normalization

    【讨论】:

      猜你喜欢
      • 2013-05-18
      • 1970-01-01
      • 2012-01-02
      • 1970-01-01
      • 1970-01-01
      • 2015-06-10
      • 1970-01-01
      • 1970-01-01
      • 2017-09-30
      相关资源
      最近更新 更多