首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有没有办法在laravel eloquent模型上使用create()方法,其中数据将调用相应的set{field}属性方法?

在Laravel Eloquent模型中,可以通过使用create()方法来快速创建新的模型实例并保存到数据库中。create()方法接受一个关联数组作为参数,其中键对应模型的属性名,值对应属性的值。

如果想要在使用create()方法时调用相应的set{field}属性方法,可以通过在模型中重写create()方法来实现。首先,在模型中定义相应的set{field}属性方法,例如setField1Attribute(),setField2Attribute()等,这些方法会在设置属性值时自动调用。

然后,在模型中重写create()方法,将传入的数据数组进行遍历,对每个属性值进行处理,再调用父类的create()方法保存到数据库中。以下是一个示例:

代码语言:txt
复制
class MyModel extends Model
{
    // 定义set{field}属性方法
    public function setField1Attribute($value)
    {
        // 处理属性值
        $this->attributes['field1'] = $value;
    }

    public function setField2Attribute($value)
    {
        // 处理属性值
        $this->attributes['field2'] = $value;
    }

    // 重写create()方法
    public static function create(array $attributes = [])
    {
        // 遍历属性数组,调用相应的set{field}属性方法
        foreach ($attributes as $key => $value) {
            $method = 'set' . Str::studly($key) . 'Attribute';
            if (method_exists($this, $method)) {
                $this->{$method}($value);
            }
        }

        // 调用父类的create()方法保存到数据库中
        return parent::create($attributes);
    }
}

通过以上方式,可以在使用create()方法时自动调用相应的set{field}属性方法,对属性值进行处理后保存到数据库中。

关于Laravel Eloquent模型的更多信息,可以参考腾讯云的文档:Laravel Eloquent 模型

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Laravel5.7 Eloquent ORM快速入门详解

Eloquent 模型看作功能强大查询构建器,你可以使用它来流畅查询与其关联数据表。例如: <?...批量赋值 还可以使用 create 方法保存一个新模型。该方法返回被插入模型实例。...所以,你应该在模型中定义哪些属性是可以进行赋值使用模型 $fillable 属性即可实现。例如,我们设置 Flight 模型 name 属性可以被赋值: <?...要删除一个模型调用模型实例 delete 方法: $flight = App\Flight::find(1); $flight- delete(); 通过主键删除模型 在上面的例子中,我们调用...Laravel 自带软删除功能就使用了全局作用域来从数据库中拉出所有没有被删除模型。编写自定义全局作用域可以提供一种方便、简单方式来确保给定模型每个查询都有特定条件约束。

15K41

laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析

' = 1]); 3、通过查询构建器操作数据Laravel常用数据库操作封装为接口函数提供给用户调用,从而使数据库操作更为便捷,这些接口就是查询构建器(query builder)。...Laravel内置Eloquent ORM提供了一种便捷方式帮助你组织数据数据,每张数据表都对应一个与该表进行交互模型(Model),通过Model类,你可以对数据表进行查询、插入、更新、删除等操作...Eloquent ORM本质是查询构建器,因此上面查询构建器所使用方法Eloquent都可以使用。...使用create批量添加时,需要在模板中通过fillable指定可以赋值字段,也可以guard指定不允许赋值字段。...()、first()来获取数据 通过上面的增删改查可以看出Eloquent可以使用查询构建器所有方法,除了增删改查外,还有where、聚合函数等。

13.3K51

【译】20个 Laravel Eloquent 小技巧(

Eloquent ORM 在其表面简单易用机制背后,还有很多半隐藏功能或者少有人知方法来实现一些很有用需求。 本文中,我向您展示一些技巧。 1....模型 boot() 方法 Eloquent模型中有一个名为boot()神奇地方,您可以在其中覆盖默认行为: class User extends Model { public static...模型属性: 时间戳, 附加属性(appends) 等 Eloquent模型有一些“参数”,会以该类属性形式出现。...', 'password']; // 这些字段可以模型 create 方法中直接创建 protected $dates = ['created_at', 'deleted_at']; //...这些字段将会转换成 Carbon类型,可以方便使用 Carbon 提供时间方法 protected $appends = ['field1', 'field2']; // 序列化时候附加额外属性

2.2K50

Laravel系列4.4】模型Eloquent ORM使用(二)

模型Eloquent ORM使用(二) 对于模型探索我们还将继续。上篇文章中,只是简单地通过模型操作了一下数据库,并且学习了一下关联操作知识。...() 方法模型对象转换成数组格式。...这里路由 mTest 参数实际就是我们查询数据主键 ID ,然后模型就会自动为我们查询相应数据并注入到 $mTest 参数中。...但 Eloquent\Builder 内部持有的一个query 属性依然是 Query\Builder 对象,也就是说底层,它依然是调用我们熟悉那个 查询构造器 来进行工作。...但是,这里划重点了,Eloquent\Builder 中有些方法是没有的,比如说 insert()、insertGetId() ,模型中,使用 save() 就可以代替这两个方法操作。

2.8K20

Laravel Eloquent 模型关联关系(下)

Eloquent 模型上进行关联查询主要分为两种方式,一种是懒惰式加载(动态属性),一种是渴求式加载(通过with方法)。...从性能上来说,渴求式加载更优,因为它会提前从数据库一次性查询所有关联数据,而懒惰式加载每次查询动态属性时候才会去执行查询,会多次连接数据库,性能上差一些(数据库操作主要开销在数据库连接上,所以开发过程中如果想优化性能...统计关联模型 我们还可以通过 Eloquent 提供 withCount 方法不加载关联模型情况下统计关联结果数量。...所以不管模型实例有多少个,关联结果只会查询一次,加上模型本身查询总共是两次查询,列表查询时,大大减少了对数据连接查询次数,因而有更好性能表现,推荐使用。...>orderBy('created_at', 'desc'); }]); 关联插入与更新 一对多关联记录插入 新增关联模型时候,可以模型调用相应方法直接插入记录到数据库,这样做好处是不需要指定关联模型与父模型外键关联字段值

19.5K30

orm 系列 之 Eloquent使用2

一篇介绍了Eloquentmigrations和Scheme Builder功能,本文介绍Eloquent最重要Model。...,我们不做过多介绍,我们此处来看下,all方法执行,allModel中是不存在,那怎么调用呢?...查询和聚合 Eloquent提供了丰富查询方式,通过前面的__call方法分析,我们知道,这些最终调用都是Eloquent/Builder方法,where方法也不例外,where其最简单形式如下:...,先看数据记录怎么变为Model,此处有几个方法 Model::create新建, Model::hydrate数据数据转换为Model 当时遇到问题有字段对应,另一个是安全问题,具体来说就是怎么知道数组中...key和Modelattribute对应,Eloquent方法是直接属性存储为一个$attributes数组,然后由用户自己根据字段名进行获取,但是,其实这也会有个问题,就是一旦字段名更改了,我们必须要去更改所有直接使用字段名地方

53341

Laravel系列4.3】模型Eloquent ORM使用(一)

this->child->{模型Eloquent ORM使用(一) 先来说说 ORM 是什么,不知道有没有不清楚这个概念小伙伴,反正这里就一道科普一下算了。...在这里比较奇怪是,我们实例化和赋值过程中没有给对象主键 id 赋值,但是 save() 之后,id 就有值了,而且是我们新插入数据 id ,是不是很高大。...等等,不对呀,我们模型里面定义是一个 gender() 方法,怎么在外面使用是一个属性?别急,我们再来看看源码,看看框架中是如何把调用属性变成调用一个方法。...这里我也不多做讲解了,反正如果是在对象调用时候,调用是没有明确类模板中写下属性,就会来到这个 __get() 魔术方法中。...其实这段代码已经很清楚明了了,如果没有 key 就返回一个空内容,如果 key 存在于当前这个模型相关属性中,则调用一些处理方法后返回。

8.8K20

Laravel 模型操作中一次奇妙踩坑经历

其中各种对应关系我就不做讲解了哈,上面也有介绍,不太清楚建议把模型关联再去细读一遍: namespace App; use Illuminate\Database\Eloquent\Model;use...attributes 做更改,这一点也可以从 Model 中 __set 魔术方法中看到,其中是有调用一个 setAttribute 方法,我们来看一下: ?...大家知道控制器中直接 return 时候,是会直接转化为 Json 数据格式模型中也相对应有这么一个方法: ? ? 一步步走下来发现,最终还是调用了 toArray 。...不知道大家有没有理解,有需要改进地方大家评论区留言噢。...特别鸣谢: zIym 同学[1] (咱俩一起跨坑,哈哈) 结束语 其实吧最初我也没有想这么多,想了很多其它解决办法,但是都是治根不治本,到头来发现自己对 Laravel 模型工作原理还是不熟悉,只存在简单应用上面

1.6K30

Laravel 7发行说明

get 方法负责将从数据库中获取原始数据转换成对应类型,而 set 方法则是数据转换成对应数据库类型以便存入数据库中。...经过修改 Blade 组件如此之多,请从这里 Blade文档来学习这些新特性。 总结为一句,现在一个组件能从指定类获取数据。所有的公开属性方法都清晰地定义组件类里,会自动组装成组件视图。...路由模型绑定优化 路由模型绑定优化由 Taylor Otwell 开发贡献 。 自定义键名 有时你可能希望使用 id 以外字段来解析 Eloquent 模型。...7 将自动确定查询范围,以使用约定猜测其父级关系名称,以其父级检索嵌套模型。...Laravel7中,可以在任务类定义 maxExceptions 属性: <?

9K20

orm 系列 之 Eloquent演化历程2

grammarcompileCommand函数,此处我们调用是compileCreate函数,至此我们就分析完了数据库表操作方法,下面我们来看migrations功能。...当我们命令行中执行php artisan command时候,会去调用migrateCommand,然后最后会调用Migrator中函数runMigrations函数,看下面分析: public...来实现,最终是通过执行记录以log形式插入到数据库中。...本文最后讲下Eloquent中新增对象之间关系:多态关系,以下内容摘自[ Laravel 5.3 文档 ] Eloquent ORM —— 关联关系 表结构 多态关联允许一个模型单个关联下属于多个不同模型...当访问 commentable 关联时,ORM 根据commentable_type 字段来判断所属模型类型并返回相应模型实例。

2.4K30

laravel框架模型数据库基础操作实例详解

使用了pdo参数绑定,使应用程序免于sql注入,因此传入参数不需要额外转义特殊字符。基本可以满足所有的数据库操作,而且在所有支持数据库系统都可以执行。...; 3.Eloquent ORM 1.简介、模型建立及查询数据 简介:laravel所自带Eloquent ORM 是一个ActiveRecord实现,用于数据库操作。...每个数据表都有一个与之对应模型,用于数据表交互。 建立模型app目录下建立一个Student模型,即Student.php,不需要带任何后缀。 <?...如果不需要这个功能,只需要在模型里加一个属性:public $timestamps=false; 以及一个方法,可以当前时间戳存到数据库 protected function getDateFormat...修改数据 使用save方法更新模型 使用update方法更新数据(和create相对应Eloquent模型类还支持使用update方法更新数据,同样要用到批量赋值) //通过模型更新数据 $student

2.8K20

【译】20个 Laravel Eloquent 小技巧(下)

继续介绍 Laravel Eloquent 小技巧 11....自定义属性排序 假设你有下面的一段代码: (设定了一个返回对象时候附加属性 ‘full_name’参见 tips5 模型属性: 时间戳, 附加属性(appends) 等) function getFullNameAttribute...但是查询返回都是一个 Collection 对象,Laravel 为集合提供了很多方便操作方法,sortBy 就是其中一个,当然还可以用 filter 等集合操作) 12....就是对 DB 查询对象一个封装,所以可以用在 DB 原始查询方法,都可以用在继承自 Eloquent model 对象。)...Laravel 默认会给所有实体类配置时间戳,如果不需要一般是模型中指定 $timestamps = false 18. update()方法返回值是什么?

2.8K10

Laravel Eloquent 模型关联关系详解(

准备好数据表之后,接下来,我们来通过模型类建立 users 表和 user_profiles 表之间关联,Eloquent 模型类底层提供了相应 API 方法帮助我们建立模型之间关联。...(UserProfile::class); } 我们通过数据库填充技术 user_profiles 插入一些数据,这样就可以 User 模型实例通过关联方法名作为动态属性访问与其对应 UserProfile...->hasMany(Post::class); } 由于我们之间已经创建过 users 表和 posts 表,并且初始化过数据,所以我们可以直接通过动态属性方式来调用用户模型文章: $user...这里,如果你想要让代码可读性更好,可以 Post 模型关联关系调用方法名修改为 author,这样,我们就需要手动指定更多 belongsTo 方法传入参数了: public function...可以,Eloquent 为我们提供了 with 方法,我们需要查询关联关系动态属性(关联方法名)传入该方法,并将其链接到 Eloquent 模型原有的查询中,就可以一次完成关联查询,加上模型自身查询

9.8K40

laravel 学习笔记

建好表后执行 php artisan migrate 可以表查到数据库里去 5 问题 初始化表可能由于mysql版本过低导致出现问题,解决方案如下: Laravel 默认使用 utf8mb4 字符集...> 以上例程会输出: NS\ClassName 我们并没有告诉 Eloquent 我们 Flight 模型使用哪张表。...默认规则是模型类名复数作为与其对应表名,除非在模型类中明确指定了其它名称。所以,本例中,Eloquent 认为 Flight 模型存储记录在 flights 表中。...你也可以模型中定义table 属性来指定自定义表名 php make:controller TestController --plain //生成没有任何预定义方法控制器 模版引擎中,使用{{...'down'方法 Eloquent 中批量赋值 需要设置在对应模型中设置fillable属性 findOrfail //方法查询失败时候返回404响应 url生成可以使用辅助函数 url()

78830

3分钟短文 | Laravel复杂SQL超多WHERE子句,本地作用域你没用过

引言 使用框架就是为了方便把注意力集中逻辑,而不用关心与数据库操作方方面面。...Laravel提供 eloquent orm 使用面向对象方式封装了PDO数据库操作,使用起来非常方便,对于复杂SQL操作也游刃有余。...首先,你完全不必把每个条件都使用where链式调用,可以把查询条件放在一个 array 数组内,整体传入where子句。 ? 这样把拼装where子句工作,提前到查询数组操作,就更加灵活了。...要将全局作用域分配给模型,需要重写模型 booted 方法使用 addGlobalScope 方法: ?...就是在对应 Eloquent 模型方法前添加 scope 前缀,模型中构造如下作用域方法: ?

2.7K10

Laravel基础

一、Laravel核心目录文件介绍 app:程序核心代码和业务逻辑代码,其中Http目录是我们业务逻辑存放点 bootstrap:包含框架启动和自动加载文件 config:包含所有程序中配置文件...::请求方式('/demo/{id}',[‘uses’=>控制器名称@控制器下方法]) 2.3 视图 - 使用模板 直接在控制器里面调用view然后return返回即可 return view...Builder)提供方便,流畅接口,用来建立及执行数据库查找语法 使用PDO参数绑定,以保护应用程序免于SQL注入,因此传入参数不需额外转义特殊字符 基本可以满足所有的数据库操作,而且在所有支持数据库系统都可以执行...$student -> save(); 3.2.2 使用模型create方法新增数据(涉及到批量赋值) $student = new Student(); $result = $student ->...ORM 删除数据 使用模型删除数据 通过主键值删除数据 根据指定条件删除数据 //1.

7.7K30

PHP-web框架Laravel-Eloquent ORM(一)

Laravel是一种基于PHP语言Web开发框架,其中Eloquent ORM功能为开发者提供了便捷对象关系映射(ORM)功能,可用于对数据库进行CRUD操作,同时也可以轻松地定义模型关联和查询。...下一、模型定义Eloquent ORM是Laravel框架中一个基于Active Record模式ORM,通过模型数据库表进行映射,实现数据增删改查操作。...Laravel框架中,每一个Eloquent ORM模型都对应着一个数据库表,通过继承Illuminate\Database\Eloquent\Model类来定义模型。下面是一个示例:<?...模型中,我们可以定义一些属性方法,来对数据表进行操作。...二、增删改查操作Laravel框架中Eloquent ORM提供了一系列方便CRUD操作方法,如下:查询数据查询单个模型:$user = User::find($id);查询多个模型:$users

85551

Laravel学习记录--Model

'//指定主键 laravel默认添加数据库时,会 增加两个字段 create_at ,update_at 如不需要这两个字段,除迁移文件删除之外 还需model类设置属性 public $timestamps...Eloquent提供了便捷方法模型增加至关联中,如你需要为一个Muser模型插入一个新Phone,这时你无须为Phone手动设置musers属性,直接在关联使用save方法插入Phone即可...调用save方法向Phone模型插入值 这里Eloquent自动phones表中添加了uid字段,并插入正确使用saveMany添加多个值 $user = \App\Muser::find...create方法添加值 create方法和save方法一样也是向模型插入值,不同是save接收是一个完整Eloquent实例,而creare接收是一个纯数组,需要注意使用create方法需要设置...空对象模型 如果外键字段uid允许为空,当我们访问Phone模型muser属性(注意这里是属性,而不是方法)时,默认返回null,Eloquent允许我们为这种空对象定义一个默认类型,这个对象类型定义关联时指定

13.4K20
领券