Reputation: 7391
why I'm getting this?
Error: SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'favorites' in field list is ambiguous
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 code:
$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')
));
-- Table structure for table 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 ;
Upvotes: 6
Views: 26096
Reputation: 457
if u Use in WhereHas
Example
enter code here $courses=Course::where('status',1)
->with('categories')
->whereHas('categories',function ($query)use ($request){
return $query->where('categories.id',$request->categories_id);
})->get();
if u have filter Course by Categoriy_id
use 'relationname'=> for example categories u must call categories.id instead of id
Upvotes: 0
Reputation: 18250
Apparently both of the tables contain the column favorites
, might also contain the column errors
As you are joining a second table you probably want to set Traction.favorites = Profile.favorites + $favorites
and Traction.errors = Profile.errors + $errors
As said by JW. you need to use a full identifier
Upvotes: 3
Reputation: 263683
you need to specify the tableName, since multiple tables contains the same column name,
"Traction.favorites"=>"Traction.`favorites` + $favorites"
Upvotes: 21