Hey guys,
I’ve looked everywhere for a solution to my problem with MANY_MANY but I just haven’t been successful.
So here’s the deal (3 table):
Offers
Niches
NichesOffers (niche_id, offer_id)
Relation (Offers.php):
‘niches_offers’=>array(self::MANY_MANY, ‘Niches’,
'niches_offers(offer_id, niche_id)'),
And on NichesOffers.php I have two relations
'offer' => array(self::BELONGS_TO, 'Offers', 'offer_id'),
'niche' => array(self::BELONGS_TO, 'Niches', 'niche_id'),
So what I’m trying to do is look up a niche_id and return all offers that match:
$niche_id = 3;
$criteria=new CDbCriteria;
$criteria->with = array('niches_offers' => array('condition'=>'niche_id = :id', 'params'=>array(':id'=>$niche_id)));
$criteria->together = true;
$offers =new CActiveDataProvider('Offers', array('criteria'=>$criteria));
Here’s the error I’m getting:
CDbCommand failed to execute the SQL statement: SQLSTATE[23000]: Integrity constraint violation: 1052 Column ‘published’ in where clause is ambiguous. The SQL statement executed was: SELECT t.title AS t0_c1, t.our_price AS t0_c12, t.regular_price AS t0_c13, t.id AS t0_c0, niches_offers.id AS t1_c0, niches_offers.name AS t1_c1, niches_offers.published AS t1_c2, niches_offers.site_id AS t1_c3, niches_offers.created AS t1_c4, niches_offers.updated AS t1_c5 FROM offers t LEFT OUTER JOIN niches_offers niches_offers_niches_offers ON (t.id=niches_offers_niches_offers.offer_id) LEFT OUTER JOIN niches niches_offers ON (niches_offers.id=niches_offers_niches_offers.niche_id) WHERE ((published = 1) AND (site_id=1)) AND (niche_id = :id) LIMIT 10
I do have tables with the same column name (published) but I don’t see why this is happening.
Thanks so much for taking the time to check this out. Any advice is super appreciated.