• laravel ORM随笔小结


    1、软删除

    除了真实删除数据库记录, Eloquent 也可以「软删除」模型。软删除的模型并不是真的从数据库中删除了。事实上,是在模型上设置了 deleted_at 属性并将其值写入数据库。如果 deleted_at 值非空,代表这个模型已被软删除。

    如果要开启模型软删除功能,模型引用use SoftDeletes,SoftDeletes trait 会自动将 deleted_at 属性转换成 DateTime / Carbon 实例

    deleted_at 字段添加到数据表中,使用$table->softDeletes(),

    软删除之后在模型实例上使用 delete 方法, 当前日期时间会写入 deleted_at 字段。同时,查询出来的结果也会自动排除已被软删除的记录。使用 withTrashed 方法来获取包括软删除模型在内的模型,onlyTrashed 方法 只 获取已软删除的模型;

    有时会对软删除模型进行 「撤销」,在已软删除的数据上使用 restore 方法即可恢复到有效状态:

    附带两个永久删除代码:

    // 单个模型实例的永久删除... $flight->forceDelete();

    // 关联模型的永久删除... $flight->history()->forceDelete();

    2、匿名全局作用域

    class User extends Model {

      /**

      *模型的「启动」方法.

      *

      * @return void

      */

      protected static function boot() {

        parent::boot();

        static::addGlobalScope('age', function (Builder $builder) {

          $builder->where('age', '>', 200);

        });

      }

    }

    3、定义关联关系

    1、模型关联定义,return $this->hasOne('AppPhone', 'foreign_key', 'local_key'),主表为当前模型,外键为关联模型主键。

    2、定义反向关联,return $this->belongsTo('AppUser', 'foreign_key', 'other_key'),主表为关联模型,外键为当前模型主键。

    4、对象转换器

    1、日期转换器:默认情况下,Eloquent 会将 created_at 和 updated_at 字段转换为 Carbon 实例,它继承了 PHP 原生的 DateTime 类并提供了各种有用的方法。当某个字段是日期格式时,你可以将值设置为一个 UNIX 时间戳,日期时间 (Y-m-d) 字符串,或者 DateTime / Carbon 实例。日期值会被正确格式化并保存到你的数据库中。

    2、属性类型转换器:模型中的 $casts 属性提供了一个便利的方法来将属性转换为常见的数据类型。$casts 属性应是一个数组,且数组的键是那些需要被转换的属性名称,值则是你希望转换的数据类型。支持转换的数据类型有: integerreal, floatdouble, decimal:<digits>stringboolean, objectarraycollection, date, datetime, 和 timestamp。 当需要转换为 decimal 类型时,你需要定义小数位的个数,如: decimal:2

  • 相关阅读:
    NFS共享储存
    Rsync服务
    企业集群架构概述
    定时任务
    开机启动流程
    进程管理(二)
    linux系统管理-进程管理
    RAID&LVM有关磁盘的故障
    gdisk分区及swap分区
    操作系统与磁盘管理
  • 原文地址:https://www.cnblogs.com/hjcan/p/11400767.html
Copyright © 2020-2023  润新知