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

如何使用不在数据库中的自定义属性保存模型?- Laravel 5.4

在Laravel 5.4中,可以使用Eloquent模型的$fillable属性来定义可以批量赋值的字段,但是这只适用于数据库中已经存在的字段。如果想要保存模型中的自定义属性,可以使用Laravel提供的setAttribute方法。

下面是一个示例代码,演示如何使用不在数据库中的自定义属性保存模型:

代码语言:php
复制
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class CustomModel extends Model
{
    protected $fillable = ['column1', 'column2'];

    protected $appends = ['customAttribute'];

    public function getCustomAttribute()
    {
        // 自定义属性的逻辑处理
        return 'custom value';
    }

    public function setCustomAttribute($value)
    {
        // 自定义属性的设置逻辑
        // 可以在这里进行一些处理或验证
        $this->attributes['customAttribute'] = $value;
    }
}

在上面的示例中,CustomModel继承自Model类,并定义了$fillable属性来指定可以批量赋值的字段。此外,还定义了$appends属性来指定要追加到模型数组表现形式中的自定义属性。

CustomModel中,我们定义了一个名为customAttribute的自定义属性,并实现了getCustomAttributesetCustomAttribute方法来处理该属性的获取和设置逻辑。在getCustomAttribute方法中,可以编写自定义的逻辑来计算或获取属性的值。在setCustomAttribute方法中,可以进行一些处理或验证,并将属性的值保存到模型的attributes数组中。

使用示例代码中的CustomModel,可以通过以下方式保存自定义属性:

代码语言:php
复制
$model = new CustomModel;
$model->column1 = 'value1';
$model->column2 = 'value2';
$model->customAttribute = 'custom value';
$model->save();

在上述代码中,我们可以看到customAttribute属性并不在$fillable属性中,但是仍然可以通过$model->customAttribute = 'custom value'来设置自定义属性的值,并且可以通过$model->save()方法将模型保存到数据库中。

需要注意的是,自定义属性在模型的attributes数组中,并不会被自动保存到数据库中。如果需要将自定义属性保存到数据库中,可以在模型的save方法之前手动将自定义属性添加到$fillable属性中,或者使用$model->setAttribute('customAttribute', 'custom value')方法来设置自定义属性的值。

希望这个答案能够帮助到您!如果您对Laravel 5.4或其他云计算相关问题有更多疑问,请随时提问。

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

相关·内容

推荐17-Laravel使用 JWT 认证 Restful API

在此文章,我们将学习如何使用 JWT 身份验证在 Laravel 构建 restful API 。JWT 代表 JSON Web Tokens 。...教程接下来步骤只在 5.5 和 5.6 测试过。可能不适用于 Laravel 5.4 或以下版本。您可以阅读 针对旧版本 Laravel 文档 。...根据 ID 从列表删除产品 添加一个构造函数来获取经过身份认证用户,并将其保存在 user 属性。...然后,使用请求数据去创建一个新产品模型。如果,产品成功写入数据库,会返回成功响应,否则返回自定义 500 失败响应。...然后,我们把请求数据使用 fill 方法填充到产品详情。更新产品模型保存数据库,如果记录成功更新,返回一个 200 成功响应,否则返回 500 内部服务器错误响应给客户端。

11K20
  • laravel-nestedset:多级无限分类正确姿势

    laravel-nestedset是一个关系型数据库遍历树larvel4-5插件包 目录: Nested Sets Model简介 安装要求 安装 开始使用 迁移文件 插入节点 获取节点 删除节点...嵌套集合模型 安装要求 PHP>=5.4 laravel>=4.1 v4.3版本以后支持Laravel-5.5 v4版本支持Laravel-5.2、5.3、5.4 v3版本支持Laravel-5.1 v2...它可以为一个新创建node或者是从数据库取出node 插入节点(node) 每次插入或者移动一个节点都要执行好几条数据库操作,所有强烈推荐使用transaction. 注意!...$delete 代表是否删除数据库已存在但是$data不存在数据,默认为不删除。...当你获取自定义排序节点和不想使用递归来循环你节点时很有用。

    3.5K20

    Laravel5.1 框架模型创建与使用方法实例分析

    本文实例讲述了Laravel5.1 框架模型创建与使用方法。...分享给大家供大家参考,具体如下: Laravel模型也是访问数据库,它更加面向对象,一个模型对应着一张表 我们可以使用模型对数据做一些增删改查操作。...2 模型常用属性 2.1 自定义表名 一个model对应一个表,model对应表名默认是model名字复数 即:Article(Model)对应Articles(Table),User(Model)...Model { public $timestamps = false; } 2.4 白名单和黑名单 当我们用到批量创建和批量修改时 必须声明黑名单或白名单,在白名单属性是可以填充属性,在黑名单属性是不允许被填充属性...结果呢 comment_count并没有被填充,原因是:它不在白名单 或者 它在黑名单。 4 更新 更新跟插入很像,也有两种方法 普通 和 批量

    2K71

    Laravel框架关键技术解析

    ,同时,可以通过as操作符改变名称来引入 使用as语法可以用来调整方法访问控制 trait抽象方法使类必须实现这个方法 trait可以用静态方法和静态变量 trait也可以定义属性 2.简化三元运算符...$deferredServices数组属性,在使用服务容器进行解析时,如果发现这个服务在延时服务数组,则会注册 D.响应发送与程序终止 八、服务容器与服务提供者 A.服务容器 1.Laravel中服务容器相当于大脑...需要将$defer属性设置为true,同时定义一个provides方法,用于返回服务提供者绑定服务名称 https://github.com/zhangyue0503/laravel5.4cn 九、请求与响应操作.../laravel5.4cn 十、数据库及操作 A.数据库迁移与填充 1.Laravel数据库迁移其实是定义了一个统一接口来实现数据库架构创建和维护,而这种统一接口与底层数据库及其操作语言都是无关...名称 https://github.com/zhangyue0503/laravel5.4cn 十一、Redis数据库 A.redis数据库应用 1.Laravel框架整合了predis资源包后将这些操作过程划分三个阶段

    11.9K20

    通过 Laravel Eloquent 模型实现批量赋值和软删除

    ,但用户在表单传递了状态字段将文章状态设置为审核通过,这样文章保存后就直接是已发布状态了。...所谓白名单属性就是该属性中指定字段才能应用批量赋值,不在白名单属性会被忽略;与之相对,黑名单属性指定字段不会应用批量赋值,不在黑名单属性则会应用批量赋值。...Eloquent 模型类默认白名单属性为空,黑名单属性为 *,即所有字段都不会应用批量赋值: /** * 使用批量赋值属性(白名单) * * @var array */ protected $...实现原理 Eloquent 模型类为我们提供了「软删除」功能支持。这就意味着,在 Laravel ,我们不需要编写任何额外代码就可以实现对数据库记录「软删除」。...注:你也可以修改这个默认约定 deleted_at 字段,但何必费这个劲呢,除非你是从其它系统迁移过来,原来表结构已经存在了,这时候可以通过再模型设置静态属性 DELETED_AT 来自定义软删除字段

    2.4K10

    分享8个Laravel模型时间戳使用技巧小结

    默认情况下,Laravel Eloquent 模型默认数据表有 created_at 和 updated_at 两个字段。当然,我们可以做很多自定义配置,实现很多有趣功能。下面举例说明。 1....其他属性和方法 } 2. 修改时间戳默认列表 假如当前使用是非 Laravel 类型数据库,也就是你时间戳列命名方式与此不同该怎么办?...如果您需要自定义时间戳格式,可以在你模型设置 $dateFormat 属性。...这个属性确定日期在数据库存储格式,以及在序列化成数组或 JSON 时格式: class Flight extends Model { /** * 日期时间存储格式 * *...并且 Laravel 不会尝试自动填充 created_at/updated_at 但是如果你想自动保存时间戳,您需要在迁移文件添加 created_at/updated_at,然后在模型关联中加上

    3.8K31

    Laravel 数据库连接配置和读写分离

    今天开始讲如何Laravel 操作数据库Laravel 为我们提供了多种工具实现对数据库增删改查,在我们使用 Laravel 提供这些数据库工具之前,首先要连接到数据库。...->get(); DB::connection('mysql_old')->table('users')->insert(...); 如果你使用 Eloquent 模型类,可以在对应模型设置 $...connection 属性: protected $connection = 'mysql_old'; 这样,在模型类上执行查询、插入等操作时都会使用这个 mysql_old 数据库连接。...其它配置项 除了上面提到数据库连接配置外,config/database.php 配置文件还有一些其它配置项,你可以通过 migrations 配置项自定义数据库迁移表名称,默认是 migrations...这一思想在 Laravel 配置无处不在,很多服务都支持配置多个连接提供不同驱动,比如 Session 支持文件、数据表等连接,缓存支持 Memcached、Redis 等连接,队列支持数据库、Beanstalkd

    5.4K20

    Laravel 5.5 为 Mailables 类型新增 theme 属性

    Laravel 5.4 引入了 Markdown 邮件,使得我们在邮件享受 Blade 模板组件和 Slots 同时,可以用 Markdown 语法编写电子邮件。...Laravel 自带了一系列预定义组件,比如 headers, footers, buttons 以及 tables. 开发者可以很容易地在电子邮件模板中使用这些组件。...Markdown 邮件使用默认主题发送,这意味着你可以不用做任何额外设计工作就能发送漂亮电子邮件,并且也不用担心所发出电子邮件在所有的电子邮件客户端兼容性。...然而,万一你想自己设计电子邮件样式,让它与你品牌更加匹配呢?在 Laravel 5.4 ,你可以通过创建自己主题来达到这一目的。...到了 Laravel 5.5 ,同样做这件事情,就变得更加灵活方便了。你可以直接在一个 Mailable 类中指定使用主题。

    1.6K50

    Laravel API教程:如何构建和测试RESTful API

    在本文中,我们将探讨如何构建和测试使用Laravel进行身份验证强大API。我们将使用Laravel 5.4,所有的代码都可以在GitHub上参考。...您可以将资源表示在多个数据模型(或根本不在数据库中表示),并且模型完全不受用户限制。最后,您将以适合您应用程序方式来决定如何构建资源和模型。...现在让我们回到我们模型,并将这些属性添加到$fillable字段,以便我们可以在我们Article::create和Article::update模型使用它们: class Article extends...您也可以使用该$guarded 属性,以允许除属性所有属性。 Database Seeding Database Seeding是使用我们可以用来测试数据库虚拟数据填充我们数据库过程。...这意味着当我们打到认证中间件时,它将当前用户保存在 TokenGuard 实例,以避免再次触发数据库

    20.4K20

    通过 Laravel Eloquent 模型实现简单增删改查操作

    下面我们将模型类定义时候还会强调这一点。 模型类定义 使用模型类之前,需要在数据库有对应数据表,因为模型类就是数据表在面向对象编程语言中映射。...属性模型类指定使用哪个连接: protected $connection = 'connection_name'; 查询数据 日常开发,大部分操作都是数据库查询数据,Eloquent 模型了为我们提供了很多方法帮助我们从数据库获取数据...执行上面的代码就会在数据库新增一条记录(我们在 Tinker 执行上述代码): ? 我们先要创建一个新 Post 模型实例,然后依次设置需要设置字段,最后调用 save 方法保存即可。...两者区别是 firstOrCreate 方法在设置完模型属性后会将该模型记录保存数据库,而 firstOrNew 不会: $post_1 = Post::firstOrCreate([ '...->delete(); 结语 在这篇教程,我们简单给大家介绍了 Eloquent 是什么,以及「约定优于配置」理念在 Eloquent 应用,最后还给大家演示了如何通过 Eloquent 实现数据库增删改查

    8K20

    Laravel框架Eloquent ORM新增数据、自定义时间戳及批量赋值用法详解

    本文实例讲述了Laravel框架Eloquent ORM新增数据、自定义时间戳及批量赋值用法。...分享给大家供大家参考,具体如下: 好了,这篇文章我们主要掌握以下几个知识点 通过模型新增数据(涉及到自定义时间戳) 使用模型Create方法新增数据(涉及到批量赋值) NO.1通过模型新增数据 我数据库和上篇文章结尾数据库样式是一致...只需要在模型文件里增加一个属性 如下: protected $fillable = ['name','age'];//这里是可以批量赋值属性 然后结果如下: ?...更多关于Laravel相关内容感兴趣读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及...《php常见数据库操作技巧汇总》 希望本文所述对大家基于Laravel框架PHP程序设计有所帮助。

    1.1K61

    3分钟短文:Laravel Carbon自定义日期时间格式

    引言 laravel引用了强大Carbon日期时间处理库用于日期时间操作, 并且在数据库格式化中使用该库。本文就说一说程序如何方便地使用 Carbon自定义格式。...,在模型逐步引入了更加丰富特性,比如说 casts 特性, 可以支持对模型数据查询后进行指定格式化操作,省却了不少繁琐操作。...或者在laravel5使用 $dates 属性,功效与上面的方式相同: protected $dates = ['created_at', 'updated_at'] 读取时候,该字段都会返回一个null...接着使用Carbon对象 format 方法,返回自定义格式就可以了。...在模板打印默认格式日期时间字符串,可以这样使用: {{$user->created_at->toFormattedDateString()}} 写在最后 本文介绍了laravel模型 $casts

    3.6K20

    两个非常棒 Laravel 权限管理包推荐

    角色和权限是许多 Web 应用程序重要组成部分。 有很多为这个部分而写包,随着 Laravel 历史发展官方也提供了相关支持。那么今天这块市场情况如何?有什么包是最好用么?...追本遡源 —— Laravel 官方权限功能支持在 5.1.11 版引入之后就几乎没变过。...Laratrust 问题是使用自己 Laravel 命令替换默认 Laravel 命令,因此无法使用 Gates 或 @can 语法。...安装和使用 两个包安装类似: 添加到 composer 安装; 在 config/app.php 添加一个提供器和 facade (Bouncer); 发布和运行迁移; 在用户模型引入指定 trait...以下是 GitHub 上链接: Laravel 5.4 admin panel based on Spatie Laravel-permission Laravel 5.4 admin panel based

    4.2K30

    Laravel5.4 队列简单配置与使用

    百度百科是这样说 “队列”是在传输过程中保存数据容器。 举几个生活例子: * iphone手机新款发布,三里屯iphone进新货。...每一种队列驱动配置都可以在该文件中找到, 包括数据库, Beanstalkd, Amazon SQS, Redis, 以及同步(本地使用)驱动。...这个函数主要用途就是将你队列需求加入到指定容器(专业点叫生产者,其实你大可理解为你在商城购物完排队结账时候) 设置驱动 Laravel神奇数据库迁移我就不多说了。我相信你知道。...=队列),这里我们选择使用关系型数据库来实现队列 QUEUE_DRIVER=database 创建任务 创建任务 = 搞一个生产者 = (其实就是写一个在队列你想执行业务逻辑),名字随意取,但最好遵守命名规范...php artisan queue:work 基本就下面这个样 到此Laravel5.4 队列简单配置与使用就结束了。

    1.5K10

    Laravel框架自定义验证过程实例分析

    本文实例讲述了Laravel框架自定义验证过程。...其中,我们使用了3个参数user_name,user_id,password,attempt会把除了password之外内容作为where内容,从数据库搜索记录,如果记录为0,那么当然不用说了,验证失败...laravel保存$password方式是使用PHP函数password_hash,该函数能计算传入值哈希值,而且该函数需要第二个参数,指定哈希处理方式,Laravel该参数名为PASSWORD_BCRYPT...假设你密码为123456,那么你保存数据库值就是 password_hash('123456','PASSWORD_BCRYPT') Auth::attempt()会将你提交过来值,做password_hash...这里再穿插一个知识点,当你使用Eloquent作为数据库驱动时,你需要新建一个用户类,User.php,你可以使用命令行来新建该模型,也可以直接手动新建,但是注意,命令行新建模型是存在问题,Auth

    4.8K20

    Laravel5.7 Eloquent ORM快速入门详解

    所以,在本例,Eloquent 认为 Flight 模型存储记录在 flights 表。你也可以在模型定义 table 属性来指定自定义表名: <?...该属性决定日期被如何存储到数据库,以及模型被序列化为数组或 JSON 时日期格式: <?...默认情况下,所有的 Eloquent 模型使用应用配置默认数据库连接,如果你想要为模型指定不同连接,可以通过 $connection 属性来设置: <?...Laravel 自带软删除功能就使用了全局作用域来从数据库拉出所有没有被删除模型。编写自定义全局作用域可以提供一种方便、简单方式来确保给定模型每个查询都有特定条件约束。...事件允许你在一个指定模型类每次保存或更新时候执行代码。 retrieved 事件会在从数据库获取已存在模型时触发。当一个新模型被首次保存时候,creating 和 created 事件会被触发。

    15.1K41

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

    本文实例讲述了laravel框架模型数据库基础操作。...使用了pdo参数绑定,使应用程序免于sql注入,因此传入参数不需要额外转义特殊字符。基本上可以满足所有的数据库操作,而且在所有支持数据库系统上都可以执行。...; 3.Eloquent ORM 1.简介、模型建立及查询数据 简介:laravel所自带Eloquent ORM 是一个ActiveRecord实现,用于数据库操作。...新增数据、自定义时间戳、批量赋值 (1)使用save方法新增 laravel会默认维护created_at,updated_at 两个字段,这两个字段都是存储时间戳,整型11位,因此使用时需要在数据库添加这两个字段...修改数据 使用save方法更新模型 使用update方法更新数据(和create相对应,Eloquent模型类还支持使用update方法更新数据,同样要用到批量赋值) //通过模型更新数据 $student

    2.8K20
    领券