【问题标题】:containable on hasMany relationship可包含在 hasMany 关系上
【发布时间】:2010-12-02 14:42:14
【问题描述】:

您好,

我正在尝试使用 CakePHP 中的可包含来删除从 find 调用返回的查询。

例如,我有 2 个模型,用户和帖子。用户有很多帖子。

现在当我像这样在 find 调用中使用可包含时:

$User->id = 1;
$User->find('first', array(
    'fields' => array('id'),
    'contain' => array('Post')
))

它不会返回关联的 Post,而只会返回用户的 id。

但是,如果我试图以相反的方式获取数据,它会起作用。 即这有效:

   $Post->find('first', array(
        'fields' => array('id', 'user_id'),
        'conditions' => array('Post.user_id' => 1),
        'contain' => array('User')
    ))

这不是:

   $Post->find('first', array(
        'fields' => array('id'),
        'conditions' => array('Post.user_id' => 1),
        'contain' => array('User')
    ))

根据返回的值,我假设要使可包含项起作用,foreignKey 必须在字段中。

当用户的关联存储在 Post.user_id 中时,我如何能够在第一次调用时过滤掉用户字段?

非常感谢任何帮助!谢谢。

-哇

【问题讨论】:

  • 帖子是否属于用户?也许您需要定义两个方向的关系才能使一切正常工作。
  • @deceze 我尝试将递归设置为 9999(我知道 2 就足够了,但请幽默)。但它没有给我相关的帖子,如果我不把字段规范放在那里,它确实有效。一世。 e find('all', array('contain' => 'Post')).但我实际上需要过滤掉用户的字段。
  • 您能否发布代码来演示您如何定义 User 模型的 $hasMany 数组?

标签: php cakephp contains


【解决方案1】:

正如 larryb82 所说,您需要在两个方向上定义关系,以便从 User 模型中检索 Posts 数据

一个用户有很多帖子。 帖子属于用户

CakePHP Doc example

【讨论】:

    猜你喜欢
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多