Cakephp: может Model-> find ('all') возвращать результаты без названия модели - PullRequest
2 голосов
/ 11 сентября 2009

Использование Model-> find ('all') возвращает массив со следующей структурой:

array(
  0 => array('Model1' => array(/* Model1 fields*/), 'Model2' => array(/* Model2 fields*/), ...),
  1 => array('Model1' => array(/* Model1 fields*/), 'Model2' => array(/* Model2 fields*/), ...),
  ...)

Когда запрашивается одна модель (т.е. рекурсивно = -1), возможно ли возвращать результаты в виде массива со следующей структурой:

array(0 => /* Model1 fields*/, 1 => /* Model1 fields*/, etc...)

Я думал, что прочитал это где-то некоторое время назад, но не могу понять, как это сделать или если это возможно.

Ответы [ 3 ]

2 голосов
/ 13 мая 2015

А как насчет этого? работает в php 5.4 +

$result = array_map( function ($elem) {
        return $elem['YourModelName'] ;
    } ,$this->Tagcloud-> find('all')
);

Для более старых версий php вам нужно выполнить итерацию после получения результатов

1 голос
/ 11 сентября 2009

Вы также можете изменить метод после сохранения этой модели, чтобы он возвращал $ data ['Modelname'] после выполнения запроса ... По сути, это был бы сдвиг массива, и у вас был бы только $ arrayname [' имя поля '] вместо $ arrayname [' Model '] [' fieldname ']. Это то, что вы спрашивали?

1 голос
/ 11 сентября 2009

Может быть, вы думаете о связанных моделях, которые могут быть возвращены таким образом? Результаты запроса AFAIK Cake довольно стандартизированы, и это хорошо.

array(
    0 => array(
        'Model' => array(
            'id',
            'field1',
            ...
         ),
        'belongsTo/hasOneModel' => array(
            'id',
            'field1',
            ...
         )
        'habtm/hasManyModel' => array(
            0 => array(
                'id',
                'field1',
                ...
            ),
            1 => array(
                ...
            )
        )
    ),
    1 => array(
        'Model' => array(
            ...
        ),
        ...
    )
)

Как видите, связанные модели HABTM или hasMany возвращаются в "плоский" массив, но основная модель всегда должна содержать имя модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...