Yii Framework Forum: Cdbcommand Failed To Execute The Sql Statement: Sqlstate[42S22]: Column Not Found: 1054 Unknown Column - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Cdbcommand Failed To Execute The Sql Statement: Sqlstate[42S22]: Column Not Found: 1054 Unknown Column

#1 User is offline   aschafer324 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 3
  • Joined: 16-February 13

Posted 17 February 2013 - 11:44 AM

I have a media table/model that contains information about various media items, and a mediatags table that contains multiple tags per media item. I have defined a HAS_MANY relationship for media->tags and a BELONGS_TO relationship for mediatags->media, however when I try to run a Media::model()->with("tags")->find() query using a column in the mediatags table in the where clause, I get the following error (you can see that activerecord is not doing the join):

CDbCommand failed to execute the SQL statement: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'tag' in 'where clause'. The SQL statement executed was: SELECT `t`.`mediaId` AS `t0_c0`, `t`.`name` AS `t0_c1`, `t`.`thumbUrl` AS `t0_c2`, `t`.`fullUrl` AS `t0_c3`, `t`.`urlName` AS `t0_c4`, `t`.`dateadded` AS `t0_c5`, `t`.`type` AS `t0_c6`, `t`.`fileName` AS `t0_c7`, `t`.`parentTable` AS `t0_c8`, `t`.`parentId` AS `t0_c9`, `t`.`origUrl` AS `t0_c10`, `t`.`origwidth` AS `t0_c11`, `t`.`origheight` AS `t0_c12`, `t`.`fullwidth` AS `t0_c13`, `t`.`fullheight` AS `t0_c14`, `t`.`thumbwidth` AS `t0_c15`, `t`.`thumbheight` AS `t0_c16`, `t`.`contentLabel` AS `t0_c17`, `t`.`longDesc` AS `t0_c18`, `t`.`status` AS `t0_c19`, `t`.`featured` AS `t0_c20` FROM `media` `t` WHERE (tag = :tag AND type = 'P') ORDER BY dateadded DESC LIMIT 16


media table create script:
CREATE TABLE `media` (
`mediaId` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NULL DEFAULT NULL,
`thumbUrl` VARCHAR(255) NULL DEFAULT NULL,
`fullUrl` VARCHAR(255) NULL DEFAULT NULL,
`urlName` VARCHAR(255) NULL DEFAULT NULL,
`dateadded` DATETIME NULL DEFAULT NULL,
`type` CHAR(1) NULL DEFAULT NULL,
`fileName` VARCHAR(255) NULL DEFAULT NULL,
`parentTable` VARCHAR(255) NULL DEFAULT NULL,
`parentId` INT(11) NULL DEFAULT NULL,
`origUrl` VARCHAR(255) NULL DEFAULT NULL,
`origwidth` INT(11) NULL DEFAULT NULL,
`origheight` INT(11) NULL DEFAULT NULL,
`fullwidth` INT(11) NULL DEFAULT NULL,
`fullheight` INT(11) NULL DEFAULT NULL,
`thumbwidth` INT(11) NULL DEFAULT NULL,
`thumbheight` INT(11) NULL DEFAULT NULL,
`contentLabel` VARCHAR(255) NULL DEFAULT NULL,
`longDesc` TEXT NULL,
`status` VARCHAR(1) NULL DEFAULT NULL,
`featured` BIT(1) NULL DEFAULT NULL,
PRIMARY KEY (`mediaId`)
)


mediatags create script:
CREATE TABLE `mediatags` (
`mediatagId` INT(11) NOT NULL AUTO_INCREMENT,
`mediaId` INT(11) NOT NULL,
`tag` VARCHAR(255) NOT NULL,
`parentTableName` VARCHAR(255) NULL DEFAULT NULL,
`parentTableId` VARCHAR(255) NULL DEFAULT NULL,
PRIMARY KEY (`mediatagId`)
)


Media model relationships method:
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'tags'=>array(self::HAS_MANY, 'Mediatag', 'mediaId'),
);
}


Mediatag model relationship method:
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'media'=>array(self::BELONGS_TO, 'Media', 'mediaId'),
);
}


attempted query:
$photos = Media::model()->with("tags")->find(array("condition" => "tag = :tag AND type = 'P'", "order" => "dateadded DESC", "params"=>array(':tag'=> $tag),
"limit" => (int) $pageSize,
"offset" => (int) $offset
));
0

#2 User is offline   aschafer324 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 3
  • Joined: 16-February 13

Posted 17 February 2013 - 03:54 PM

I have narrowed this down to the "limit" in my findAll query (my attempted query is a findAll not a find) - it appears that the SQL being executed properly joins the mediatags table when I leave off the limit, but if I have the limit in there, the SQL being executed does not have the join in it.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users