Изменить способ получения результатов из связанной модели - PullRequest
0 голосов
/ 03 ноября 2018

У нас есть таблица пар имя-значение с дополнительными элементами, которые можно связать со свойством site_id, netpark_location_id и т. Д.

Когда cakephp возвращает ассоциацию hasMany для таблицы PropertyOption, она в обычном формате для ассоциации hasMany:

[PropertyOption] => Array
    (
        [0] => Array
            (
                [id] => 1
                [property_id] => 1
                [name] => prs_company_id
                [value] => 7
                [type] => text
                [created] => 2018-10-02 16:05:38
                [modified] => 2018-10-02 16:05:38
            )
         [1] => Array
            (
                [id] => 1
                [property_id] => 1
                [name] => prs_channel_id
                [value] => 880
                [type] => text
                [created] => 2018-10-02 16:05:38
                [modified] => 2018-10-02 16:05:38
            )

Есть ли способ или способ AfterFind для массирования данных в

 [PropertyOption] => Array
    (
        [prs_channel_id] => 880
        [prs_company_id] => 7
    )

В настоящее время я использую функцию в AppModel, которая позволяет передавать ему набор результатов, но это дополнительный вызов

public function nameValPair($alias,$results){
    $result = [];
    if(is_array($results[$alias]) && count($results[$alias]) > 0){
        foreach ($results[$alias] AS $r){
            $result[$r['name']] = $r['value'];
        }
    }
    return $result;
}

Затем в контроллере мы должны передать результаты в

$propoption = $this->Property->nameValPair('PropertyOption',$property);
$property['PropertyOption'] = $propoption;
...