romanoza
(Romanoza)
December 22, 2009, 2:54pm
1
Hi, I have this code to get model with some relations:
$user = User::model()->with('trafficPartner.trafficSources.trafficSourceRequest')->findByPk(Yii::app()->user->id);
it’s generate this SQL:
SELECT
<bla bla bla>
FROM
`User`
LEFT OUTER JOIN
`TrafficPartner` `trafficPartner` ON
(`User`.`trafficPartnerId` = `trafficPartner`.`id`)
LEFT OUTER JOIN
`TrafficSource` `trafficSources` ON
(`trafficSources`.`trafficPartnerId` = `trafficPartner`.`id`)
LEFT OUTER JOIN
`TrafficSourceRequest` `trafficSourceRequest` ON
(`trafficSourceRequest`.`trafficSourceId` = `trafficSources`.`id`)
WHERE
(`User`.`id` = 45)
and there is 3 records, but when i trying to get last relation:
var_dump($user->trafficPartner->trafficSources->trafficSourceRequest);
it’ returns NULL
WTF?
tri
(tri - Tommy Riboe)
December 22, 2009, 3:16pm
2
romanoza:
Hi, I have this code to get model with some relations:
$user = User::model()->with('trafficPartner.trafficSources.trafficSourceRequest')->findByPk(Yii::app()->user->id);
it’s generate this SQL:
SELECT
<bla bla bla>
FROM
`User`
LEFT OUTER JOIN
`TrafficPartner` `trafficPartner` ON
(`User`.`trafficPartnerId` = `trafficPartner`.`id`)
LEFT OUTER JOIN
`TrafficSource` `trafficSources` ON
(`trafficSources`.`trafficPartnerId` = `trafficPartner`.`id`)
LEFT OUTER JOIN
`TrafficSourceRequest` `trafficSourceRequest` ON
(`trafficSourceRequest`.`trafficSourceId` = `trafficSources`.`id`)
WHERE
(`User`.`id` = 45)
and there is 3 records, but when i trying to get last relation:
var_dump($user->trafficPartner->trafficSources->trafficSourceRequest);
it’ returns NULL
WTF?
trafficSources sounds like a possible array. Is it a HAS_MANY relationship?
/Tommy
romanoza
(Romanoza)
December 22, 2009, 3:20pm
3
Yes, it’s array but why can’t I get collection of last relation without fetching pervious array of objects?
romanoza
(Romanoza)
December 22, 2009, 3:23pm
4
Yeah, I forget this thing:
foreach($user->trafficPartner->trafficSources as $a) {
foreach($a->trafficSourceRequest as $<img src='http://www.yiiframework.com/forum/public/style_emoticons/default/cool.gif' class='bbc_emoticon' alt='B)' /> {
echo $b->requestId.'-';
}
}
it’s shows me that all is ok
but 2 foreach - bad
tri
(tri - Tommy Riboe)
December 22, 2009, 3:26pm
5
romanoza:
Yeah, I forget this thing:
foreach($user->trafficPartner->trafficSources as $a) {
foreach($a->trafficSourceRequest as $<img src='http://www.yiiframework.com/forum/public/style_emoticons/default/cool.gif' class='bbc_emoticon' alt='B)' /> {
echo $b->requestId.'-';
}
}
it’s shows me that all is ok
but 2 foreach - bad
You might consider to start from trafficSourceRequest, using BELONGS_TO relationships.
(was applicable in my case)
/Tommy