Я хотел бы создать соединительную таблицу tbl_guid_cost_centre
об этом позаботятся без меня, вручную сохраняя его в базе данных. Я попытался добавить это в мои отношения:
'costCentre' => [
self::HAS_ONE,
'CostCentre',
'guid_to',
'foreignKey' => 'guid',
'tbl_guid_cost_centre(guid_to, cost_center_id)',
"order" => "id desc"],
так что при сохранении costCentre для него создается строка в моем tbl_guid_cost_centre
, Однако я получаю ошибку:
Свойство «CHasOneRelation.0» не определено.
Любое предложение?
Вы можете иметь свою таблицу соединений с ключевым словом through
в ваших отношениях:
public function relations() {
'guidCostCentre' => [
self::HAS_ONE,
'GuidCostCentre',
['guid_to' => 'guid']
],
'costCentre' => [
self::HAS_ONE,
'CostCentre',
'cost_centre_id',
'through' => 'guidCostCentre'
]
}
Вы определяете HAS_ONE
отношение в неправильном пути. Первыми тремя элементами массива конфигурации отношений должны быть: тип отношения, имя связанной модели и определение внешних ключей. Все остальные элементы должны быть проиндексированы ключами, связанными со свойствами отношений. 'tbl_guid_cost_centre(guid_to, cost_center_id)',
вероятно, генерирует эту ошибку, потому что у него нет ключа, поэтому он обрабатывается как значение для 0
имущество. Вы не поделились подробностями, поэтому трудно угадать, чего вы хотите достичь, но вы должны начать с чего-то вроде этого:
'costCentre' => [
self::HAS_ONE,
'CostCentre',
'guid_to',
'order' => 'id desc',
],
И добавьте дополнительные настройки в конце массива с правильным ключом.
Некоторые примеры и пояснения вы можете найти в документации: https://www.yiiframework.com/doc/guide/1.1/en/database.arr#declaring-relationship