【发布时间】: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 数组?