Заставить торт php найти результат запроса для изменения ключа массива со значением id, используя сам Cake php - PullRequest
3 голосов
/ 30 марта 2012

Как заставить торт php найти ключ массива результатов запроса, чтобы изменить его на значение id, используя торт php?

$videos = $this->Video->find('all');

print_r($videos);

Массив будет

Array
(
    [0] => Array
        (
            [Video] => Array
                (
                    [id] => 6
                )

        )

    [1] => Array
        (
            [Video] => Array
                (
                    [id] => 8
                )

        )
)

Как изменить массивключ со значением id, как показано ниже

Array
(
    [6] => Array
        (
            [Video] => Array
                (
                    [id] => 6
                )

        )

    [8] => Array
        (
            [Video] => Array
                (
                    [id] => 8
                )

        )
)

Возможно ли это самому php торта?

Ответы [ 3 ]

8 голосов
/ 24 октября 2012

Если вам действительно нужны данные в этом формате, вы можете использовать afterFind для установки идентификаторов или использовать класс CakePHP Hash / Set.

Попробуйте это (начиная с CakePHP 2.2)

$videos = $this->Video->find('all');
$videos = Hash::combine($videos, '{n}.Video.id', '{n}');
debug($videos);

Или это для CakePHP старше 2.2

* * 1010

Подробнее см. http://book.cakephp.org/2.0/en/core-utility-libraries/hash.html

Если вы можете сказать нам, почему вам нужны данные в этом формате, мы также можем предложить более эффективные способы, поскольку данные не должны изменяться таким образом.

1 голос
/ 06 апреля 2013

В CakePHP 2.2 вы можете использовать

$videos = $this->Video->find('list');
pr($videos);

Это будет печатать каждое значение с идентификатором в качестве ключа.

Я не знаю, сможете ли вы использовать это в 1.3, но вы можете попробовать ...

1 голос
/ 30 марта 2012

Нет, это не так.Вы можете изменить результат в afterFind (), посмотреть на book.cakephp.org, но я бы просто использовал данные как есть.Я не вижу причин добавлять эти дополнительные издержки и сложность, потому что идентификатор в любом случае доступен.

...