Помощь Cakephp afterFind () - PullRequest
       29

Помощь Cakephp afterFind ()

1 голос
/ 27 октября 2010

У меня есть такой результат поиска в массиве

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] => 
                                        )

                        )

                )

        )

)

В основном удалите часть Предмета и поднимите Пользователя на уровень

Ответы [ 2 ]

4 голосов
/ 27 октября 2010

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

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

1 голос
/ 29 октября 2010

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

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

...