Mat*_*att 6 php laravel eloquent laravel-5.1
我在Laravel 5.1上重新开发一个项目
我意识到旧课程变得非常复杂,并且不再遵循"单一责任"原则.
所以我打算这样做:
<?php
class User extends Model
{
}
class SocialUser extends User
{
}
Run Code Online (Sandbox Code Playgroud)
所以我有几个问题,
谢谢.
你\xe2\x80\x99正在做的事情(扩展模型User
)非常好,也是我在项目中使用的方法。
例如,如果应用程序 I\xe2\x80\x99m 构建具有类似商店的功能,那么我可以创建一个Customer
扩展User
模型的模型,并包含订单相关关系:
class Customer extends User\n{\n public function orders()\n {\n return $this->hasMany(Order::class, \'customer_id\');\n }\n\n public function worth()\n {\n return $this->orders()->sum(function ($order) {\n return $order->total();\n });\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n在最近的一个项目中,我\xe2\x80\x99一直致力于电子邮件活动功能,并创建了一个Recipient
类来扩展User
模型以添加与活动相关的方法:
class Recipient extends User\n{\n public function campaigns()\n {\n return $this->belongsToMany(Campaign::class, \'recipient_id\');\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n因为这两个类都扩展了User
模型,所以我获得了所有这些(和 Eloquent)方法:
$customers = Customer::with(\'orders\')->get();\n
Run Code Online (Sandbox Code Playgroud)\n\n只要您在基本模型中设置表,任何继承它的类都将User
使用同一个表,即使模型的名称可能不同(即Customer
、等)。Recipient
Student