CakePHP - сортировка записей модели по сериализованному массиву идентификаторов, хранящихся в другой модели, к которой принадлежит первый массив - PullRequest
1 голос
/ 29 февраля 2012

Я установил ассоциацию hasMany, чтобы в учетной записи было много разделов.Конечный пользователь может создавать разделы, а затем сортировать их.Я сохраняю порядок разделов в сериализованном массиве.Это то, что я получаю, когда читаю Аккаунт:

Array
(
    [Account] => Array
        (
            [id] => 252446224806973
            [order] => Array
                (
                    [0] => 481
                    [1] => 480
                    [2] => 482
                )

            [bgcolor] => #FFF
        )

    [Section] => Array
        (
            [0] => Array
                (
                    [id] => 480
                    [content] => Array
                        (
                            [body] => <p>Test</p>
                            [bgcolor] => 
                            [color] => #000
                        )

                    [kind] => text
                    [marginbottom] => 0
                    [account_id] => 252446224806973
                )

            [1] => Array
                (
                    [id] => 481
                    [content] => Array
                        (
                            [colorscheme] => light
                            [num_posts] => 2
                        )

                    [kind] => comment
                    [marginbottom] => 0
                    [account_id] => 252446224806973
                )

            [2] => Array
                (
                    [id] => 482
                    [content] => Array
                        (
                            [body] => 
                        )

                    [kind] => sound
                    [marginbottom] => 0
                    [account_id] => 252446224806973
                )

        )

)

Как видите, секции возвращаются в порядке их идентификатора.Я бы хотел, чтобы они возвращались в порядке, указанном массивом order в модели Account (это уже было не сериализовано в afterFind).Я не думаю, что смогу установить это в самой ассоциации.Но я предполагаю, что в библиотеке Set должен быть метод для применения в afterFind.Я, конечно, могу написать некоторый код для этого, но я бы предпочел торт ».

В: Не можете ли вы создать поле заказа в таблице« Разделы »?

A: Нет,Я просто не могу:)

1 Ответ

1 голос
/ 29 февраля 2012

вы можете использовать Set Utility:

http://book.cakephp.org/2.0/en/core-utility-libraries/set.html#Set::sort

...