Как я могу развернуть значение другого атрибута, отличного от внешнего ключа, в view.ctp?


у меня есть программа, в которой у меня есть две таблицы: Assets и Types. В Assets существует внешний ключ Types, основным ключом которого является type_id. Я хочу, чтобы я всегда появлялся атрибут" name "Types вместо "type_id". Вот почему я использую следующий код в TypesTable.php:

$this->setDisplayField('name');

который правильно работает для форм добавления и редактирования. Проблема заключается в том, что для запроса и index показывает мне только type_id, и я искал на многих страницах, как сделать, чтобы изменить это, но единственное, что я нахожу для добавления и редактирования форм с кодом, написанным выше. Как я могу заставить его развернуть атрибут "name" вместо "type_id" в запросе и индексе?

P. D: в случае запроса я отформатирован как таблица (интерфейс по умолчанию bake), а не как форма с заблокированными полями. Таким образом, я развертываю значение в настоящее время:

 <tr>
        <th scope="row"><?= __('Tipo') ?></th>
        <td><?= h($asset->type_id) ?></td>
    </tr>
Author: Daniel Vásquez, 2018-06-01

1 answers

Сначала вы должны определить отношения, если вы этого не сделали или bake не сделали этого для вас

$this->belongsTo('Types', [
    'foreignKey' => 'type_id',
    'joinType' => 'INNER'
]);

И в вашем контроллере вы вызываете его с помощью contain:

$assets = $this->Assets->find()->contain(['Types']);

Если вы используете paginate, Вы объявляете его в $this->paginate

$this->paginate = [
    'contain' => ['Types']
];

И в вашем представлении вы развертываете его следующим образом:

<?= $asset->type->name ?>
 1
Author: , 2018-06-01 18:26:47