laravel ORM 中的约定模型 约定优于配置

本文深入探讨了Laravel ORM中的约定模型概念,解释了如何通过遵循约定来简化配置过程,实现快速开发。从数据库迁移、模型关联到Eloquent ORM的使用,逐一解析了约定优于配置的思想在实际开发中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php
namespace App\Models\Mongodb;

use Illuminate\Database\Eloquent\Model;
//use Moloquent;  //monogo
use Illuminate\Support\Facades\DB;
use Illuminate\Database\Eloquent\SoftDeletes;

class MyTestTable extends Model
{

    use SoftDeletes;
    protected $collection = 'tobacco';  // 约定稳定名    monogo 用法·
    protected $primaryKey = '_id';      // 设置主键字段   monogo 用法·

    protected $table = 'articles';      // 约定模型映射表名 mongo 如上
    public $incrementing = false;       // 设置主键不是自增 mysql有用 mongo 不知道
    protected $keyType = 'string';      // 设置逐渐类型
    public $timestamps = false;         // 设置时间
    protected $dateFormat = 'U';        // 默认时间戳格式 Unix时间戳
    protected $connection = 'name';     // 默认链接名称
    protected $appends = [];            // 追加字段
    protected $fillable = [];           // 定义字段白名单,允许操作表中的哪些字段
    protected $guarded = [];            // 1、使用model::create([])等方法直接对orm对象操作使,必须定义$guarded或者$fillable 2、使用$m = new model();然后$m->save()的方式不需要定义 3、简便的方式就是定义$fillable = [];
    protected $hidden = [];             // 定义查询结果隐藏那些字段
    const CREATED_AT = 'created';       // 定义数据行创建时间和修改时间的字段名称。默认created_at,updated_at, 没有设null 如 const UPDATED_AT = null;

   /* 把ORM查询的数据自动转换。例如把int转boolean,时间戳转时间,json转成数组等。*/
    protected $casts = [
        'created'   => 'date:Y-m-d',
        'updated'   => 'datetime:Y-m-d H:i',
        'jsonData'  => 'array',
        'intSwitch' => 'boolean',
        'id' => 'int'
    ];

    /*这里只能是created_at,updated_at,不是你自己的字段*/
    public function getDates(){
        return ['created_at'];
    }

    /*软删除字段deleted_at*/
    //use Illuminate\Database\Eloquent\SoftDeletes;
    // protected $dates = ['deleted_at'];
    // 查询数据时会自动排除掉deleted_at非null的数据,若向带上使用User::withTrashed()
    // 删除某条数据时使用$user->delete()然后save()即可。deleted_at由null变为时间.


    protected function getMyNameArrtibute()
    {
        return 'MT';
    }

    public static function getAll()
    {

    }


    public function many()
    {
        // 一对多 - Post::comments()
        return $this->hasMany('App\Comment', 'foreign_key', 'local_key');
    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值