2010-10-27 3 views
1

я есть результат поиска, как это в массивеCakePHP afterFind() поможет

Array 
(
    [0] => Array 
     (
      [StatusMessage] => Array 
       (
        [id] => 1 
        [pid] => 0 
        [message] => First Status Message 
        [item_id] => 1 
        [commenters_item_id] => 2 
        [created] => 2010-10-26 02:09:05 
        [modified] => 2010-10-26 02:09:09 
       ) 

      [Item] => Array 
       (
        [id] => 1 
        [module_id] => 1 
        [item_id] => 1 
        [User] => Array 
         (
          [id] => 1 
          [first_name] => Harsha 
          [last_name] => Vantagudi 
          [username] => harshamv 
          [file] => 
         ) 

       ) 

      [StatusMessageReply] => Array 
       (
        [0] => Array 
         (
          [id] => 2 
          [pid] => 1 
          [message] => Second Status Message 
          [item_id] => 1 
          [commenters_item_id] => 1 
          [created] => 2010-10-26 02:09:05 
          [modified] => 2010-10-26 02:09:09 
          [Item] => Array 
           (
            [id] => 1 
            [module_id] => 1 
            [item_id] => 1 
            [User] => Array 
             (
              [id] => 1 
              [first_name] => Harsha 
              [last_name] => Vantagudi 
              [username] => harshamv 
              [file] => 
             ) 

           ) 

         ) 

       ) 

     ) 

) 

Я хочу изменить его, чтобы сделать его немного красивее, удалив некоторые вещи в массиве

Array 
(
    [0] => Array 
     (
      [StatusMessage] => Array 
       (
        [id] => 1 
        [pid] => 0 
        [message] => First Status Message 
        [item_id] => 1 
        [commenters_item_id] => 2 
        [created] => 2010-10-26 02:09:05 
        [modified] => 2010-10-26 02:09:09 
       ) 

        [User] => Array 
         (
          [id] => 1 
          [first_name] => Harsha 
          [last_name] => Vantagudi 
          [username] => harshamv 
          [file] => 
         ) 

      [StatusMessageReply] => Array 
       (
        [0] => Array 
         (
          [id] => 2 
          [pid] => 1 
          [message] => Second Status Message 
          [item_id] => 1 
          [commenters_item_id] => 1 
          [created] => 2010-10-26 02:09:05 
          [modified] => 2010-10-26 02:09:09 
            [User] => Array 
             (
              [id] => 1 
              [first_name] => Harsha 
              [last_name] => Vantagudi 
              [username] => harshamv 
              [file] => 
             ) 

         ) 

       ) 

     ) 

) 

Басциально удалить деталь и сдвинуть пользователя до уровня

ответ

4

Я бы сказал, не. Никто не собирается или не заботится об этом, кроме вас. И нет никакой реальной выгоды для изменения внутреннего формата данных модели. Напротив, это может вызвать проблемы. Поддерживайте свои внутренние форматы данных!

Независимо от того, используете ли вы информацию пользователя, используя $statusMessage['Item']['User'] или $statusMessage['User'], на самом деле это не так важно. Если вы настаиваете на этом, я бы предложил вам join таблицу users непосредственно в таблицу status_messages через таблицу items в запросе, чтобы отказаться от дополнительного шага по извлечению Item, а Cake автоматически отформатирует результаты так, как вы хотите.

+0

oh ok. я думал, что код станет уродливым и нуждается в рефакторинге: D спасибо. –

1

Если вы хотите ограничить связанные таблицы и/или поля, которые возвращены, вы должны посмотреть на Containable. Когда у вас появляется большая куча неинтересных вещей, которые вам не нужны, вы можете немного облегчить обработку, «сдерживая» ее тем, что хотите.

Но, как говорит Децез, не Обрезать его исключительно для эстетики.

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