Как я могу развернуть значение другого атрибута, отличного от внешнего ключа, в 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>
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 ?>