Я использую $ this-> find ('threaded') в моем приложении CakePHP и пытаюсь вытащить связанную модель в пределах поиска (HABTM). Я пробовал несколько методов, таких как «присоединяется», «рекурсивный» и «содержит» все без везения. Я использую CakePHP 2.3.6CakePHP Threaded «Найти» с ассоциированными моделями
Вот мой (рабочий) код.
class EventsController extends AppController { public function promoters($id = null) { $options = array('conditions' => array('Event.id' => $id)); $event = $this->Event->find('first', $options); $this->set('event', $event); $this->loadModel('EventsPromoter'); $treelistConditions = array( 'conditions' => array( 'event_id' => $id ), ); $promoterTree = $this->EventsPromoter->find('threaded', $treelistConditions); $this->set('promoters', $promoterTree); } }
Это приводит к следующему выходу массива
Array ( [0] => Array ( [EventsPromoter] => Array ( [id] => 1 [promoter_id] => 1 [event_id] => 1 [parent_id] => [created] => 2013-07-26 00:30:09 [modified] => 2013-07-26 00:30:09 ) [children] => Array ( [0] => Array ( [EventsPromoter] => Array ( [id] => 10 [promoter_id] => 4 [event_id] => 1 [parent_id] => 1 [created] => 0000-00-00 00:00:00 [modified] => 0000-00-00 00:00:00 ) [children] => Array ( ) ) [1] => Array ( [EventsPromoter] => Array ( [id] => 13 [promoter_id] => 6 [event_id] => 1 [parent_id] => 1 [created] => 0000-00-00 00:00:00 [modified] => 0000-00-00 00:00:00 ) [children] => Array ( ) ) ) ) [1] => Array ( [EventsPromoter] => Array ( [id] => 2 [promoter_id] => 2 [event_id] => 1 [parent_id] => [created] => 2013-07-26 00:30:09 [modified] => 2013-07-26 00:30:09 ) [children] => Array ( [0] => Array ( [EventsPromoter] => Array ( [id] => 11 [promoter_id] => 5 [event_id] => 1 [parent_id] => 2 [created] => 0000-00-00 00:00:00 [modified] => 0000-00-00 00:00:00 ) [children] => Array ( [0] => Array ( [EventsPromoter] => Array ( [id] => 6 [promoter_id] => 3 [event_id] => 1 [parent_id] => 11 [created] => 0000-00-00 00:00:00 [modified] => 0000-00-00 00:00:00 ) [children] => Array ( ) ) ) ) [1] => Array ( [EventsPromoter] => Array ( [id] => 14 [promoter_id] => 7 [event_id] => 1 [parent_id] => 2 [created] => 2013-07-26 00:30:09 [modified] => 2013-07-26 00:30:09 ) [children] => Array ( ) ) ) ) )
Что я хочу, чтобы мой код на выход не является следующим
Array ( [0] => Array ( [EventsPromoter] => Array ( [id] => 1 [promoter_id] => 1 [event_id] => 1 [parent_id] => [created] => 2013-07-26 00:30:09 [modified] => 2013-07-26 00:30:09 ) [Promoter] => Array ( [promoter_id] => 1 [first_name] => 'Bob' [last_name] => 'Smith' ) [children] => Array ( [0] => Array ( [EventsPromoter] => Array ( [id] => 10 [promoter_id] => 4 [event_id] => 1 [parent_id] => 1 [created] => 0000-00-00 00:00:00 [modified] => 0000-00-00 00:00:00 ) [Promoter] => Array ( [promoter_id] => 4 [first_name] => 'Sally' [last_name] => 'Sue' ) [children] => Array ( ) ) [1] => Array ( [EventsPromoter] => Array ( [id] => 13 [promoter_id] => 6 [event_id] => 1 [parent_id] => 1 [created] => 0000-00-00 00:00:00 [modified] => 0000-00-00 00:00:00 ) [Promoter] => Array ( [promoter_id] => 6 [first_name] => 'Ben' [last_name] => 'King' ) [children] => Array ( ) ) ) ) [1] => Array ( [EventsPromoter] => Array ( [id] => 2 [promoter_id] => 2 [event_id] => 1 [parent_id] => [created] => 2013-07-26 00:30:09 [modified] => 2013-07-26 00:30:09 ) [Promoter] => Array ( [promoter_id] => 2 [first_name] => 'Jack' [last_name] => 'Sparrow' ) [children] => Array ( [0] => Array ( [EventsPromoter] => Array ( [id] => 11 [promoter_id] => 5 [event_id] => 1 [parent_id] => 2 [created] => 0000-00-00 00:00:00 [modified] => 0000-00-00 00:00:00 ) [Promoter] => Array ( [promoter_id] => 5 [first_name] => 'Jane' [last_name] => 'Doe' ) [children] => Array ( [0] => Array ( [EventsPromoter] => Array ( [id] => 6 [promoter_id] => 3 [event_id] => 1 [parent_id] => 11 [created] => 0000-00-00 00:00:00 [modified] => 0000-00-00 00:00:00 ) [Promoter] => Array ( [promoter_id] => 3 [first_name] => 'Mike' [last_name] => 'Jones' ) [children] => Array ( ) ) ) ) [1] => Array ( [EventsPromoter] => Array ( [id] => 14 [promoter_id] => 7 [event_id] => 1 [parent_id] => 2 [created] => 2013-07-26 00:30:09 [modified] => 2013-07-26 00:30:09 ) [Promoter] => Array ( [promoter_id] => 7 [first_name] => 'Spider' [last_name] => 'Man' ) [children] => Array ( ) ) ) ) )
Я ничего не пытался работаю, и это, кажется, как то, что Торт должен быть в состоянии справиться довольно легко. Заранее благодарю за любую помощь!
Вы попробовали '' содержать '=> массив (' Promoter ') '(обратите внимание на отсутствующие s - не содержит)? Также: вы должны всегда указывать точную версию cakephp, которую вы используете. – mark
Да, я пробовал также, вот что этот код выглядел как: $ treelistConditions = массив ( \t \t 'условия' => массив ( \t \t \t 'event_id' => $ ID \t \t), \t \t 'содержать' => массив ('Promoter'), ); Кроме того, я обновил вопрос с помощью правильной версии CakePHP –