数据库课程作业笔记 - 编写模型文件

数据库课程作业笔记 - 编写模型文件

相关参考

Laravel 文档 - Eloquent:入门

创建模型文件

将模型文件放到Models文件下,命名空间使用 App\Models

namespace App\Models;
use Illuminate\Database\Eloquent\Model;
php artisan make:model Models/Employee 
php artisan make:model Models/Customer
php artisan make:model Models/Product
php artisan make:model Models/Purchase
php artisan make:model Models/Supplier

模型文件主要部分

员工

class Employee extends Model
{
    // 规定表名称,继承填写时默认以小写复数作为表名(Laravel 底层约定)
    protected $table = 'employees';

    // 字段名称,以常量写出起到全局更改的作用
    const TABLE = 'employees';
    const ID = 'id';
    const NAME = 'ename';
    const CITY = 'city';

    // fillable 字段用于限制哪些可以被批量赋值,在创建和修改时起到保护作用
    protected $fillable = [
        self::NAME,
        self::CITY
    ];

    // 这里是一对多关系 一个员工拥有多个购买记录
    public function purchases()
    {
        return $this->hasMany(Purchase::class,'eid','id');
    }
}

顾客

class Customer extends Model
{
    protected $table = 'customers';
    const TABLE = 'customers';
    const ID = 'id';
    const NAME = 'cname';
    const CITY = 'city';
    const VISITS_MADE = 'visits_made';
    const LAST_VISIT_TIME = 'last_visit_time';

    protected $fillable = [
        self::NAME,
        self::CITY,
        self::VISITS_MADE,
        self::LAST_VISIT_TIME
    ];

    public function purchases()
    {
        return $this->hasMany(Purchase::class,'cid','id');
    }
}

供应商

class Supplier extends Model
{
    protected $table = 'suppliers';
    const TABLE = 'suppliers';
    const ID = 'id';
    const NAME = 'sname';
    const CITY = 'city';
    const TELEPHONE = 'telephone_no';

    protected $fillable = [
        self::NAME,
        self::CITY,
        self::TELEPHONE
    ];

    public function products()
    {
        return $this->hasMany(Product::class,'sid','id');
    }
}

产品

class Product extends Model
{
    protected $table = 'products';
    const TABLE = 'products';
    const ID = 'id';
    const NAME = 'pname';
    const QOH = 'qoh';
    const QOH_THRESHOLD = 'qoh_threshold';
    const ORIGINAL_PRICE = 'original_price';
    const DISCNT_RATE = 'discnt_rate';
    const SID = 'sid';

    protected $fillable = [
        self::NAME,
        self::QOH,
        self::QOH_THRESHOLD,
        self::ORIGINAL_PRICE,
        self::DISCNT_RATE,
        self::SID
    ];

    public function supplier()
    {
        return $this->belongsTo(Supplier::class,'sid','id');
    }

    public function purchases()
    {
        return $this->hasMany(Purchase::class,'pid','id');
    }
}

购买记录

class Purchase extends Model
{
    protected $table = 'purchases';
    const TABLE = 'purchases';
    const ID = 'id';
    const CID = 'cid';
    const EID = 'eid';
    const PID = 'pid';
    const QTY = 'qty';
    const PTIME = 'ptime';
    const TOTAL_PRICE = 'total_price';

    protected $fillable = [
        self::CID,
        self::EID,
        self::PID,
        self::QTY,
        self::PTIME,
        self::TOTAL_PRICE
    ];

    public function customer()
    {
        return $this->belongsTo(Customer::class,'cid','id');
    }

    public function employee()
    {
        return $this->belongsTo(Employee::class,'eid','id');
    }

    public function product()
    {
        return $this->belongsTo(Product::class,'pid','id');
    }

}

这里没有完成Log表的操作,将在下一个实验完成,在创建完模型后我们去填充数据库

本作品采用《CC 协议》,转载必须注明作者和本文链接
MARTINPOTTER
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!