It's quite complicated as I have to deal with some craziness in the
form search form submission. I don't think this is the problem, but
here's the function that sorts out the conditions:

        private function setPreConditions() {
                $preConditions = $this->postConditions($this->data);
                unset($preConditions['Search.search']);
                $facilitiesConditions = array();
                if(!empty($preConditions)) {
                        foreach($preConditions as $key => $value) {
                                if(empty($value)) {
                                        unset($preConditions[$key]);
                                } else {
                                        if(substr($key, 0, 14) == 
'SchoolFacility') {
                                                $facility_name = substr($key, 
15);
                                                
$facilitiesConditions[]['School.facilities LIKE ?'] = "%
\"$facility_name\";s:1:\"1\";%";
                                                unset($preConditions[$key]);
                                        }
                                        if($key == 'School.name') {
                                                $preConditions[]['or'] = 
array('LOWER(School.name) LIKE' =>
'%'.low($value).'%', 'LOWER(Course.name) LIKE' => '%'.low($value).'%',
'LOWER(CourseType.name) LIKE' => '%'.low($value).'%', 'LOWER
(CourseQualification.name) LIKE' => '%'.low($value).'%', 'LOWER
(CourseLevelMin.name) LIKE' => '%'.low($value).'%');
                                                unset($preConditions[$key]);
                                        }
                                        if($key == 'Course.start_time') {
                                                switch($value) {
                                                        case 'AM':
                                                                
$preConditions[]['or'] = array('Course.start_time <' =>
'12:00:00', 'Course.start_time' => null);
                                                                break;
                                                        case 'PM':
                                                                
$preConditions[]['or'] = array('Course.start_time >=' =>
'12:00:00', 'Course.start_time' => null);
                                                                break;
                                                }
                                                unset($preConditions[$key]);
                                        }
                                        if($key == 'Course.max_class_size') {
                                                
$preConditions['Course.max_class_size <='] = $value;
                                                unset($preConditions[$key]);
                                        }
                                        if($key == 'Course.course_level_min') {
                                                $preConditions[]['or'] = 
array('CourseLevelMin.order <=' =>
$value, 'Course.course_level_min' => null);
                                                unset($preConditions[$key]);
                                        }
                                        if($key == 'Student.age') {
                                                $preConditions[]['or'] = 
array('Course.minimum_age <=' =>
$value, 'Course.minimum_age' => null);
                                                $preConditions[]['or'] = 
array('Course.maximum_age >=' =>
$value, 'Course.maximum_age' => null);
                                                $preConditions[]['or'] = 
array('Accommodation.minimum_age <=' =>
$value, 'Accommodation.minimum_age' => null);
                                                $preConditions[]['or'] = 
array('Accommodation.maximum_age >=' =>
$value, 'Accommodation.maximum_age' => null);
                                                unset($preConditions[$key]);
                                        }
                                        if($key == 'Course.lessons_per_week') {
                                                switch($value) {
                                                        case 1:
                                                                
$preConditions['Course.lessons_per_week <='] = 10;
                                                                break;
                                                        case 2:
                                                                
$preConditions['Course.lessons_per_week >='] = 10;
                                                                
$preConditions['Course.lessons_per_week <='] = 15;
                                                                break;
                                                        case 3:
                                                                
$preConditions['Course.lessons_per_week >'] = 15;
                                                                
$preConditions['Course.lessons_per_week <='] = 20;
                                                                break;
                                                        case 4:
                                                                
$preConditions['Course.lessons_per_week >'] = 20;
                                                                break;
                                                }
                                                unset($preConditions[$key]);
                                        }
                                        if($key == 'Search.view') {
                                                unset($preConditions[$key]);
                                        }
                                        if($key == 'Course.no_of_weeks') {
                                                
$preConditions['CourseFee.week_'.$value.' >'] = 0;
                                                $preConditions[]['or'] = 
array('Accommodation.minimum_stay <='
=> $value, 'Accommodation.minimum_stay' => null);
                                                $preConditions[]['or'] = 
array('Accommodation.maximum_stay >='
=> $value, 'Accommodation.maximum_stay' => null);
                                        }
                                }
                        }
                }
                $preConditions[] = $facilitiesConditions;
                $preConditions[] = array('Course.published' => 1);
                return $preConditions;
        }

On Sep 12, 3:25 pm, brian <[email protected]> wrote:
> I missed Miles's post, also. I, too, think your $conditions looks
> strange. Can you post the actual code (not debug output)?
>
> On Fri, Sep 11, 2009 at 11:57 AM,martinp<[email protected]> wrote:
>
> > Hello
>
> > Thanks for your replies. I thought I was watching this topic, but
> > wasn't aware that the discussion had continued without me!
>
> > Brian - I think you've hit the nail on the head regarding my
> > containment problem, but I still don't have it working.
> > Miles J - I assure you they are all belongsTo associations. What is
> > wrong with my conditions array?
>
> > I've stripped it back a bit to try and get the 'School' association
> > working first. Here's what I have:
>
> >                $this->paginate['CourseResult'] = array(
> >                        'fields' => array(
> >                                'CourseResult.id',
> >                                'CourseResult.course_id',
> >                                'CourseResult.no_of_weeks',
> >                                'CourseResult.year',
> >                                'CourseResult.price'
> >                        ),
> >                        'contain' => array(
> >                                'Course' => array(
> >                                        'fields' => array(
> >                                                'Course.id',
> >                                                'Course.school_id',
> >                                                'Course.name',
> >                                                'Course.course_language_id',
> >                                                'Course.course_type_id',
> >                                                
> > 'Course.course_qualification_id',
> >                                                'Course.course_level_min',
> >                                                'Course.course_level_max',
> >                                                'Course.published',
> >                                                'Course.deleted'
> >                                        ),
> >                                        'School' => array(
> >                                                'fields' => array(
> >                                                        'School.id',
> >                                                        'School.name',
> >                                                        'School.city',
> >                                                        'School.country_id'
> >                                                )
> >                                        )
> >                                )
> >                        ),
> >                        'conditions' => $conditions
> >                );
> >                $rows = $this->paginate('CourseResult');
>
> > Working with the same conditions as above and with the same result.
>
> > On Sep 4, 9:31 pm, Miles J <[email protected]> wrote:
> >> Correct me if im wrong, but are you allowed to use $conditions the way
> >> he is? On top of that, I feel like were not seeing all the queries,
> >> all of those associations cant be belongsTo.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to