Laravel 模型其他实用方法

Laravel 模型 内置了很多不为人知的方法

Laravel 模型内置了很多方法,大部分都不知道如何使用,也不知道是有哪些,今天整理了一些。 比如取得更改前的时候,更改之后的数据,这些都是很有实用价值。

attributesToArray 把属性转换成数组

        $a=Article::find(1);
        dump($a->attributesToArray());

输出

array:26 [▼
  "id" => 1
  "lang_id" => 1
  "category_id" => 2
  "sort" => 0
  "is_checked" => 1
  "is_top" => 0
  "name" => "公司介绍8"
  "brand" => null
  "money" => "0.00"
  "intro" => null
  "wb_url" => ""
  "slug" => ""
  "name_color" => null
  "author" => null
  "thumb" => ""
  "thumb_show" => null
  "thumbs" => null
  "down_files" => null
  "content" => "<p>dsfdsf43543345329</p>"
  "m_content" => null
  "seo_title" => null
  "seo_key" => null
  "seo_desc" => ""
  "look_numbers" => 0
  "created_at" => "2020-07-20 23:06:36"
  "updated_at" => "2020-07-21 12:41:29"
]

执行过程,会将日期设置的成字符串,默认的日期字段和附加的字段,我们设置自定义的属性,也会转换成字符串,下面2个方法就是转换的过程

 public static function cacheMutatedAttributes($class)
    {
        static::$mutatorCache[$class] = collect(static::getMutatorMethods($class))->map(function ($match) {
            return lcfirst(static::$snakeAttributes ? Str::snake($match) : $match);
        })->all();
    }

  protected static function getMutatorMethods($class)
    {
        preg_match_all('/(?<=^|;)get([^;]+?)Attribute(;|$)/', implode(';', get_class_methods($class)), $matches);

        return $matches[1];
    }

如果你想你自定义的属性需要显示的话,那么可以使用如下 setAppends这个方法

$a->setAppends(['url'])->attributesToArray()

append/setAppends 属性追加显示

getAttributes 取得所有属性

setRawAttributes 设置模型的属性,会替换模型原本的属性

$a=Article::with('category')->find(1);
 dump($a->setRawAttributes(['hxx'=>23434,'dd'=>234],1)->toArray());
array:3 [▼
  "hxx" => 23434
  "dd" => 234
  "category" => array:33 [▶]
]
需要花费 10个元宝,后才能查看完整内容 立即购买

提示

评论区 (0)

没有记录
支持 markdown,图片截图粘贴拖拽都可以自动上传。
黑白课堂

黑白课堂

混元大罗金仙 站长创业者玉树凌风每天醒来0收入

查看更多

最新视频课程

Laravel 的 PhpSpreadsheet 包入门

ace.js 打造一款属于你的 Web 编辑器,入门文档。

wap2App 入门讲解,100%速成,全面为你讲解。

Laravel Permission 中文文档

解释 OAuth 2.0 认证 和使用场景说明

Laravel 之 horizon 队列管理界面系统

钻级赞助商