我需要在用户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
)
);
答案 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