cakephp用户标识和相关模型

时间:2015-09-02 19:52:56

标签: cakephp model associations cakephp-2.5

我需要在用户ID上匹配关联的模型,我认为以下代码可以正常工作,因为user_id返回ArticleUser,但它没有给我FavoriteArticle我需要。

对于null模型,数据返回FavoriteArticle,是的,数据库中有一个favorite_articles表。

public $hasOne = array(
    'ArticleUser',
    'FavoriteArticle' => array(
        'className' => 'FavoriteArticle',
        'conditions' => array(
            'FavoriteArticle.user_id' => 'ArticleUser.user_id'
        ),
        'dependent' => true
    ) 
);

1 个答案:

答案 0 :(得分:0)

看看你执行的sql。

条件数组总是被转义

当条件被定义为数组时,CakePHP假定键是“安全的”并且值是用户输入,数组值总是被转义。这意味着这个代码:

$animateProvider.classNameFilter()

使用这样的查找呼叫:

$animateProvider.classNameFilter(/animate/)

生成的sql相当于:

public $hasOne = array(
    'ArticleUser',
    'FavoriteArticle' => array(
        'conditions' => array(
            'FavoriteArticle.user_id' => 'ArticleUser.user_id' # <-
        ),
        'dependent' => true
    ) 
);

请注意,加入条件是将$stuff = $articles->find('all', [ 'contain' => [ 'ArticleUser', 'FavoriteArticle' ] ]); 字符串

进行比较

如何比较两个字段值

要比较两个字段值,请使用sql片段:

SELECT 
    *
FROM 
    articles
LEFT JOIN
    article_user ON (
        favorite_articles.article_user_id = article_user.id
    )
LEFT JOIN
    favorite_articles ON (
        favorite_articles.articles_id = articles.id AND
        favorite_articles.user_id = 'ArticleUser.user_id' # <-
    )

哪个会生成相当于的SQL:

user_id