【发布时间】:2015-09-02 19:52:55
【问题描述】:
我需要匹配用户 id 上的关联模型,我认为下面的代码可以工作,因为我确实得到了 ArticleUser 的 user_id,但它没有给我我需要的 FavoriteArticle。
对于FavoriteArticle 模型,数据返回为null,是的,数据库中有一个favorite_articles 表。
public $hasOne = array(
'ArticleUser',
'FavoriteArticle' => array(
'className' => 'FavoriteArticle',
'conditions' => array(
'FavoriteArticle.user_id' => 'ArticleUser.user_id'
),
'dependent' => true
)
);
【问题讨论】:
-
两个问题: 1. 你用的是什么版本的CakePHP? 2. 可以使用
$this->ArticleUsers->FavoriteArticles->find('all', array('conditions' => array('user_id' => X)));从ArticleUsersController中获取FavoriteArticle吗? -
@LarsEbert 它是 2.6.1 版,我没有使用 ArticleUsersController,因为 Article 模型有一个 ArticleUser。所有逻辑都在 ArticlesController 中。我还希望有某种方法可以将当前的 userId 传递给关联属性,但似乎没有办法不将模型绑定到控制器中。
-
那么你可以使用
$this->Article->ArticleUsers->FavoriteArticles->find('all', array('conditions' => array('user_id' => X)));从ArticleController访问FavoriteArticle吗? -
@LarsEbert 以这种方式进行查找时出现错误。此外,如果文章有收藏夹,此逻辑只会获取文章,如果文章没有收藏夹怎么办?我需要Articles 和FavoriteArticles,我知道我可以做一个AND 或一个OR 运算符,但希望我可以通过模型在运行时得到这个,而不必在操作中构建查询。顺便说一句,如果用户有喜欢的文章,我使用了一个单独的函数来处理。
-
在ArticlesController 中使用
$this->Articles->ArticleUsers->FavoriteArticles->find相当于在FavoriteArticlesController 中使用$this->FavoriteArticles->find。因此,如果您可以运行一个非常简单的查询(仅在 FavoriteArticlesController 中运行find('all')而不是来自 ArticlesController,则关联不起作用。另外:您遇到什么错误?
标签: cakephp model associations cakephp-2.5