zoukankan      html  css  js  c++  java
  • Laravel 模型操作(Eloquent ORM)

    Laravel 自带的 Eloquent ORM 提供了一个美观、简单的与数据库打交道的方案,每张数据表都对应一个与该表进行交互的“Model模型”,模型允许你在表中进行数据查询,以及插入、更新、删除等操作。

    模型文件的位置

    默认情况laravel模型在app目录的根目录下面。但这种情况不利于我们日后项目维护,所以我们一般建议手动创建一个目录,这样更加的方便去管理和维护。

    img

    img

    创建模型

    php artisan make:model [目录名/]模型文件名
    
    # 分目录的
    php artisan make:model Models/Member
    
    # 创建模板并生成迁移文件  实际工作中,就是创建模型同时就创建好了迁移文件
    php artisan make:model Models/Article –m
    
    # -m 生成迁移文件
    

    img

    img

    img

    模型限制

    定义表名($table)

    模型所对应的默认表名是模型类名复数形式,如果表名不统一则需要指定一下。

    // 指定表名
    protected $table = 'member';
    

    指定主键名($primaryKey)

    laravel中默认的主键ID名为id,如果你创建的表字段中主键ID的名称不为id,则需要通过 $primaryKey 来指定一下。

    // 指定主键的名称
    protected $primaryKey = 'mid';
    

    指定时间戳($timestamps)

    默认情况下,模型操作会认为在你的数据库表有 created_atupdated_at 字段。如果你不希望让模型来自动维护这两个字段,可在模型内将 $timestamps 属性设置为 false。

    // 时间戳  这里一定要注意它是用的public
    public $timestamps = false;
    

    批量赋值($fillable 与 $guarded)

    当通过create方法来保存数据的时候,你需要先在你的模型上定义$fillable或 $guarded属性。

    // 批量赋值
    # 白名单
    protected $fillable = ['允许添加的字段名'];
    
    # 黑名单
    protected $guarded = ['拒绝添加的字段名'];
    

    img

    CURD基本操作

    添加数据

    # 方法一
    save()  # 对象属性方式  返回模型对象
    
    # 方法二
    insert() #数组方式  可以添加一条或多条,返回true/false
    
    # 方法三
    create() # 数组方式 需要在模型中设置好fillable或guarded属性  返回是模型对象
    

    img

    img

    查询数据

    # 查询单条
    first()  find($id) 要想让find不报错,一定字段为id或者模型中定义了主键名称
    
    # 查询多条
    get()
    
    # 条件
    where()
    
    # 排序
    orderBy()
    
    # 取指定的值
    value()
    
    # 取指定的列
    pluck()
    
    # 查询总记录数
    count()
    

    img

    img

    修改数据

    # 方法一
    save()  # 对象属性方式  返回的是模型对象
    
    # 方法二
    update() # 数组  返回受影响行数
    

    img

    删除数据

    # 删除 一定要指定条件删除
    delete() # 对象删除
    
    destroy($id)  静态方法删除  默认表字段主键名为id,如果不是则需要模型中定义一下
    
     
    
    # 软删除
    1、在表字段中要有deleted_at字段  可以在迁移文件中直接添加一个方法 $table->softDeletes()
    2、在模型中引入 trait  use SoftDelele; 
    
    protected $dates = [删除标识字段名 deleted_at]
    

    软删除

    修改迁移文件

    img

    #删除表 并执行迁移和填充
    php artisan migrate:refresh --seed
    

    修改模型文件

    img

    控制器

    img

    软删除说白就是给标识字段中添加一些数据,让此字段不为null

    faker来进行数据填充

    https://packagist.org/packages/fzaninotto/faker

    larvel从5之后默认就已经安装了此扩展包

    img

    第1步:创建数据工厂

    php artisan make:factory 工厂的文件名  -m 模型名(目录 Models/Article)
    

    img

    img

    img

    第2步:在种子文件中调用

    img

    第3步:DatabaseSeeder文件中调用种子

    img

    第4步:执行种子

    php artisan migrate:refresh --seed

    img

    第5步:本地化

    方案1

    img

    方案2 推荐

    img

    模型事件

    https://learnku.com/docs/laravel/5.6/eloquent/1403#events

    方案1:在AppServiceProvider中的boot方法中注册模型对应的观察者。

    img

    方案2:在本模型中去注册观察 推荐

    img

  • 相关阅读:
    字母图形
    IBM CEO罗睿兰:科技公司屹立百年的3个秘诀
    Uva 1331
    js 推断字符串是否包括某字符串
    Verilog堵塞赋值与非堵塞赋值
    tabBar颜色改动
    零基础学python-4.2 其它内建类型
    怎样给你的Android 安装文件(APK)瘦身
    Ambari-部署常见问题
    ops
  • 原文地址:https://www.cnblogs.com/makalochen/p/14399252.html
Copyright © 2011-2022 走看看