【发布时间】:2018-06-16 01:50:11
【问题描述】:
我是一个尝试使用 Laravel 5.5 和 Eloquent 模型构建应用程序的新手。
我有两个课程:(1) 客户 (2) VIPCustomer 扩展了 Customer。
您可以立即告诉 VIPCustomer 包含客户拥有的所有属性以及其他额外属性。
需要说明的是,客户可能不是 VIP,VIP 必须是客户;客户在第一次购物时可以立即选择成为 VIP。
因此,我试图在数据库中做这样的事情:
客户:
+------------------------+
|id|name|gender|join_date|
+------------------------+
VIP客户:
+----------------------------------+
|customer_id|valid_until|type|point|
+----------------------------------+
(customer_id is a foriegn key referencing Customer.id)
相应地,在模型 php 文件中:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Customer extends Model
{
}
。
namespace App;
use Illuminate\Database\Eloquent\Model;
class VIPCustomer extends Customer
{
public $incrementing = false;
}
就这样吗?我看到有人说我应该使用多态关系,但我不明白这是什么意思。
此外,是否可以像这样实例化一个新的 VIP 客户?
$customer = new VIPCustomer;
$customer->name = 'Alice';
$customer->gender = 'F';
$customer->type = 'gold';
$customer->point = 0;
$customer->save();
除此之外,比如当 VIP 会员资格结束时,是否可以保留该人作为客户?因为我担心删除那个人会将他从 Customer 和 VIPCustomer 表中删除。
非常感谢您。
【问题讨论】:
标签: php laravel inheritance model eloquent