2015-02-05 3 views
0

У меня есть две модели: Событие и дата. Событие hasMany Date. Я хочу заказать события по самым последним датам. Например:Cakephp: Найти заказ по соответствующей модели

[0] => Array 
     (
      [Event] => Array 
       (
        [id] => 1 
        [name] => Event 1 
       ) 

      [Date] => Array 
       (
        [0] => Array 
         (
          [id] => 1 
          [date] => 2015-02-05 
          [start_time] => 06:00:00 
          [end_time] => 17:00:00 
          [evento_id] => 1 
         ) 
        [1] => Array 
         (
          [id] => 2 
          [date] => 2015-02-06 
          [start_time] => 06:00:00 
          [end_time] => 17:00:00 
          [evento_id] => 1 
         ) 

       ) 

     ) 
[1] => Array 
     (
      [Event] => Array 
       (
        [id] => 2 
        [name] => Event 2 
       ) 

      [Date] => Array 
       (
        [0] => Array 
         (
          [id] => 3 
          [date] => 2015-02-11 
          [start_time] => 06:00:00 
          [end_time] => 17:00:00 
          [event_id] => 2 
         )  
       ) 

     ) 
[2] => Array 
     (
      [Event] => Array 
       (
        [id] => 3 
        [name] => Event 3 
       ) 

      [Date] => Array 
       (
        [0] => Array 
         (
          [id] => 5 
          [date] => 2015-02-02 
          [start_time] => 06:00:00 
          [end_time] => 17:00:00 
          [event_id] => 3 
         ) 
        [1] => Array 
         (
          [id] => 6 
          [date] => 2015-02-03 
          [start_time] => 06:00:00 
          [end_time] => 17:00:00 
          [event_id] => 3 
         ) 

       ) 

     ) 

Итак, заказ я хочу, чтобы получить события являются: Event 3, Событие 1, Событие 2.

Это, как я звоню метод найти:

$this->Event->find('all', array('contain' => array('Date' => array('conditions' => array('Date.date >=' => date('Y-m-d')))))); 

Можно сделать это с помощью CakePHP найти метод? Благодарю.

+0

Это не через 'find' но [Hash :: рода] (http://book.cakephp.org/2.0/en/core-utility-libraries /hash.html#Hash::sort). Например: присваивание ваших результатов 'find' to $ then then $ $ resultort = Hash :: sort ($ results, '{n} .Date. {N} .date', 'asc');' – AgRizzo

ответ

0

Что-то, как это должно сделать это

$this->Event->find('all', array(
    'contain' => array(
     'Date' => array(
      'conditions' => array(' 
       Date.date >=' => date('Y-m-d') 
      ) 
     ) 
    ), 
    order => array(
     'COUNT(Date.id)' => 'DESC' 
    ) 

)); 
+0

Я получил следующую ошибку : Ошибка: SQLSTATE [42S22]: Столбец не найден: 1054 Неизвестный столбец «Date.id» в разделе «порядок заказа». Пытался переместить заказ в «Дата», но все же дает мне тот же порядок. –

+0

'order' следует вводить как' 'order'', но я думаю, что здесь может быть более целесообразным« GROUP_BY » –

+0

Да, я исправил« заказ »во время тестирования. Но проблема в том, что 'Date.id' не является членом таблицы Event. Что делать, если я пытаюсь использовать соединение, а не содержать? Может, это поможет? –

Смежные вопросы