Я попытался найти ответ на этот вопрос, так как я уверен, что его кое-что было выяснено раньше, но я не мог найти ничего, что обсуждало бы то, как cakephp форматирует данные, возвращаемые с Модели. Обычно я просто вижу, как поступают данные, и обрабатывать их по мере необходимости для каждого контроллера/представления. В этом случае, однако, я хочу повторно использовать свои взгляды, к сожалению, способ, которым cakephp передает мне данные от разных контроллеров, вызывает у меня проблемы.Как я могу изменить способ, которым cakephp передает данные для связанной модели?
У меня есть 2 модели, связаны следующим образом:
class Group extends AppModel {
public $hasMany = array( 'User');
}
class User extends AppModel {
public $belongsTo = array(
'Group' );
}
Я хочу, чтобы показать мне View/Groups/view/id
детали для отдельных групп, а также список пользователей, которые принадлежат к группе. В идеале я не хочу воссоздавать код для отображения списка пользователей, поскольку он уже существует в View/Users/index
Я обнаружил, что могу использовать $ this-> extend ('/ Users/index'), но я могу 't просто используйте `$ this-> set (' users ', $ group [' User ']), как я хочу, потому что массив построен по-разному.
В UsersController :: индекс() Я бы назвал $users = $this->find('all');
, который содержит список пользователей, как это: debug($users);
array(
(int) 0 => array(
'User' => array(
'id' => '100',
'group_id' => '101',
)
),
(int) 1 => array(
'User' => array(
'id' => '101',
'group_id' => '101',
)
)
)
В GroupsController является использование $ this-> группы-> содержит (массив ('User «)); $ group = $ this-> GroupsController-> Group-> find ('first', 'conditions' => array ('id' => $ id);
Что возвращает список групп, но в этом формат вместо debug($group['User']);
'User' => array(
(int) 0 => array(
'id' => '101',
'group_id' => '101',
),
(int) 1 => array(
'id' => '100',
'group_id' => '101',
)
)
есть в любом случае я могу изменить, как я называю моих данных модели, чтобы он проходил в согласованном порядке на разных контроллерах, является ли основной моделью или связанной модели? или я просто необходимо циклически перебирать данные каждый раз и перестраивать данные в правильном формате? Кажется, что, как только мой набор данных будет расти, он станет проблемой эффективности.
спасибо. Я не знал, что сдерживаемое изменилось, как связанные данные были привязаны к основной модели. После того, как я прочитал, как настраиваемое сдерживаемое поведение я начал использовать, как один инструмент подходит всем. Как вы предположили, я решил, что лучшим вариантом для меня было использовать один вызов для '$ group = $ this-> Group-> findByID ($ id)', а другой для '$ users = $ this-> Group-> User- > find ('all') 'с условием на group_id. –
Отлично! Рад был помочь. – jrace