У меня есть эта модель Laravel / OctoberCMS для взаимодействия с моей ExchangeModel.
Это односторонние отношения с моей ExchangeModel.
В настоящее время он хранится в таблице базы данных клиентов через ExchangeModel.id. Но я хотел бы сохранить его как ExchangeModel.currencyISO, который представляет собой трехбуквенный код страны.
Что мне нужно настроить в отношении, чтобы laravel сохранил его через другое поле, которое я пытаюсь определить с помощью otherKey или ключа вместо primaryKey (id)?
<?php namespace PhunTime\Client\Models;
use Model;
/**
* Customer Model
*/
class Customer extends Model {
/**
* @var string The database table used by the model.
*/
public $table = 'CUSTOMER';
public $primaryKey = 'customerNumber';
/**
* @var array Relations
*/
public $belongsTo = ['currency' => ['PhunTime\ExchangeRate\Models\ExchangeModel',
'key' => 'currencyISO',// EUR,USD,YEN
'otherKey' => 'currencyISO'
]];
}
Уточнение структуры:
- Customer
- id
- name
- currency(varchar(3)) <-- relation
- ExchangeModel
- id
- currencyISO
В настоящее время ExchangeModel.id хранится в Customer.currency.
Я хочу, чтобы ExchangeModel.currencyISO был сохранен в Customer.currency
Customer.currency уже является полем varchar, подходящим для его принятия.
В настоящее время, если я укажу type:relation
в fields.yaml хранит его ExchangeModel.id
независимо от того, что я указываю, как это должно хранить это. использование otherKey, foreignKey, key, ничто не помогает изменить октябрьское мнение.
В настоящее время я использую type: dropdown
что я заполняю через getcurrencyOptions()
но, по моему мнению, это далеко не идеальная ситуация.
Задача ещё не решена.
Других решений пока нет …