为什么我得到这个?
错误:SQLSTATE [23000]:完整性约束违规:1052字段列表中的“收藏夹”列不明确
SQL Query: UPDATE `twitter`.`tractions` AS `Traction` LEFT JOIN `twitter`.`profiles` AS `Profile` ON (`Traction`.`profile_id` = `Profile`.`id`) SET `Traction`.`favorites` = `favorites` + 1, `Traction`.`errors` = `errors` + 0 WHERE `Traction`.`profile_id` = 4 AND `Traction`.`date` = '2013-01-11'
CakePHP代码:
$this->Traction->updateAll(array(
"Traction.favorites"=>"`favorites` + $favorites",
"Traction.errors"=>"`errors` + $errors"
), array(
'Traction.profile_id'=>$profile['Profile']['id'],
'Traction.date'=>date('Y-m-d')
));
- 表tractions
CREATE TABLE IF NOT EXISTS `tractions` (
`id` int(10) NOT NULL auto_increment,
`date` date default NULL,
`profile_id` int(10) default NULL,
`followings` int(10) default '0',
`unfollowings` int(10) default '0',
`favorites` int(10) default '0',
`retweets` int(10) default '0',
`thanks` int(10) default '0',
`errors` int(10) default '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
答案 0 :(得分:18)
您需要指定tableName,因为多个表包含相同的列名
"Traction.favorites"=>"Traction.`favorites` + $favorites"
答案 1 :(得分:2)
显然,两个表都包含列favorites
,也可能包含列errors
当您加入第二个表时,您可能想要设置Traction.favorites = Profile.favorites + $favorites
和Traction.errors = Profile.errors + $errors
正如JW所说。你需要使用完整的标识符