我有以下查询,
$users = $q->add('Model_User')
->join('profile.user_id', 'id')
->join('activity.profile_id', 'profile.user_id')
->addCondition('timestamp', '>=', date('Y-m-d'))
->addCondition('profile.isActive', true);
->addCondition('activity.isDelivered', false)
->addCondition('activity.priority', '>=', 2);
现在,我想遍历所有“用户”他们的“个人资料”和与每个个人资料关联的“活动”。User 和 Profile 之间的关系是 1:n,Profile 和 Activity 之间的关系也是 1:n。
有可能得到这样的东西吗?
foreach($users as $user) {
foreach($user->profile as $profile) {
foreach ($profile->activity as $activity) {
//Some actions
}
}
}
早些时候我使用通过 ref() 获取关联,但是当用户数量非常大并且我不想在 DB 上进行多个查询时,这会很慢。
我目前的设置是,
$users = $q->add('Model_User')
->addCondition('timestamp', '>=', date('Y-m-d'));
foreach($users as $user) {
$profiles = $users->ref('Profile', 'user_id');
foreach(profiles as $profile) {
if($profile['isActive']) {
$activities = $profiles->ref('Activity', 'profile_id');
foreach (activities as $activity) {
if(!$activity['isDelivered'] && $activity['priority'] >= 2) {
//Some actions
}
}
}
}
}