如何解决有没有办法将假类没有数据库表/模型用于多态关系?
我有一个 transactions
表,其中的事务类型可以演变为 TopUpTransaction
、DeductTransaction
等,这些类型保存了它们的特定信息(因为它们具有不同的字段)。
现在我有一个交易类型 SecurityDeposit
,它不需要专用模型,因为它不需要任何额外信息。
我可以通过拥有一个仅保留 id
字段的模型和数据库表使其与默认变形一起工作,但这是没有意义的。
class Transaction extends Model {
public function transactionable(): MorphTo
{
return $this->morphTo();
}
public function text()
{
return $this->transactionable->text()
}
public function class()
{
return $this->transactionable->class()
}
}
class TopUpTransaction extends Model {
public function text() {
return "Top Up"
}
public function class() {
return "text-success"
}
}
class DeductTransaction extends Model {
// has text() and class() methods
}
但是,我不想在数据库中创建 SecurityDepositTransaction,因为它不需要任何附加信息
class SecurityDepositTransaction {
public function text() {
return "Security Deposit"
}
public function class() {
return "text-danger"
}
}
解决方法
SecurityDeposit 和 Transaction 的经典多态关系
class SecurityDeposit extends Transaction
{
protected $table = 'transactions';
// and use it as if you use Transaction,but it will be a seperate class
// if for example,this class has a special relation that Transaction doesnt have,// you declare it here. same for any speccific method to this class
public function specialRelation() {
return $this->hasMany(AnotherClass::class);
}
public function getDepositAmounr() {
return $this->custom_data;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。