我有这个Laravel / OctoberCMS模型与我的ExchangeModel接口。
这是与我的ExchangeModel的单方面关系。 目前,它通过ExchangeModel.id存储在Customer数据库表中。但我希望它存储为ExchangeModel.currencyISO,这是一个3个字母的国家代码。
我需要在关系中设置什么才能让laravel通过我试图通过otherKey或key而不是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字段。
目前,如果我在fields.yaml中指定type:relation
,则无论我指定应如何存储它,都会按ExchangeModel.id
存储它。使用otherKey,foreignKey,key,没有什么能帮助改变十月的思想。
目前我正在使用type: dropdown
来填充getcurrencyOptions()
,但我认为这是一个不太理想的情况。