laravel ORM 的setAttributes 与 getAttributes

Laravel开发-attributes Laravel开发-attributes Rinvex属性是一种健壮、智能和集成的实体属性值模型(EAV)实现,用于Laravel雄辩,具有强大的底层功能,可以轻松地将实体属性隐式管理为关系。它利用了Laravel雄辩的力量,平滑无缝的集成。 立即下载

参考 laravel 例子
访问器&修改器

    有时候,需要添加数据库中没有相应的字段到数组中,要实现这个,首先要定义一个访问器 ; 定义好访问器后,添加字段名到模型的appends属性 ; 以下例子实现 通过处理 最后登陆时间 字段追加 未登陆天数 属性 :

  • 例1
namespace App\Models;

class Users extends BaseModel
{
    /**
     * [$connection 数据库链接]
     * @var string
     */
    protected $connection = 'mysql';

    /**
     * [$table 数据表]
     * @var string
     */
    protected $table = 'users';

    // 追加未登录天数属性
    protected $appends = ['had_not_login_days'];       // 表里没有的字段


    // 处理没登陆天数
    public function getHadNotLoginDaysAttribute()
    {
        $login = $this->attributes['last_login_time'];  // $this->attributes表的字段属性
        $create = $this->attributes['created_at'];
        if( $login > 0) {
            $time = time() - $login;   // 有最后登陆时间
        } else {
            $time = time() - $create;  // 没,创建时间
        }
        return intval(floor($time / 86400)) . '天' ;
    }

}
namespace App\Http\Controllers;

use DB;
use App\Models\Users;

class UserController extends BaseController
{
    public function getTest()
    {
        $res = Users::find(1);
        // $res = OpadmUsers::find(1)->had_not_login_days;  50天
        dd($res)
    }
}

打印结果可以看到 appends 属性:
这里写图片描述

  • 例2
    // 在模型里定义 
    public function getLastLoginTimeAttribute($value)
    {
        if( time() - $value > 30 * 86400 )
            return $this->attributes['last_login_time'] = '该用户长时间未登录';
    }


    // 获取数据
     $res = OpadmUsers::find(1)->last_login_time;
     dd($res);  // '该用户长时间未登录'

定义修改器:要定义一个修改器,需要在模型中定义setFooAttribute方法,其中Foo是你想要访问的字段(使用驼峰式命名规则)。接下来让我们为last_login_time属性定义一个修改器,当我们为模型上的last_login_time赋值时该修改器会被自动调用:

  • 例3: 修改性别
// 在模型
public function setSexAttribute($value)
{
    if( $value == '男' )
       $this->attributes['sex'] = 1;
    else
       $this->attributes['sex'] = 0;
}

// 控制器
$res = OpadmUsers::find(1);
$res->sex = '男';
$res->save();  // 写入数据库 sex = 1
Spring Boot:如何快速搭建一个高性能微服务架构? 通过本文的详细步骤,我们成功搭建了一个高性能的微服务架构。Spring Boot 和 Spring Cloud 提供了强大的工具链,使得开发者能够快速实现服务注册与发现、负载均衡、熔断器与降级机制等功能。同时,通过数据库连接池、Redis 缓存和异步处理等优化手段,进一步提升了系统的性能和可靠性。希望本文能够帮助你快速入门 Spring Boot 微服务架构的搭建,并为实际项目提供参考。如果你有任何问题或建议,欢迎在评论区留言! 阅读详情

相关推荐

AI全景之第八章第三节:时间序列分析与预测技术

摘要 时间序列分析与预测技术从传统统计模型发展到深度学习方法。传统方法包括ARIMA模型(处理趋势和季节性)、指数平滑(加权平均预测)和状态空间模型(概率框架分解)。机器学习方法通过特征工程和树模型提升非线性建模能力。深度学习方法中,RNN/LSTM处理序列依赖,TCN利用因果卷积,Transformer通过注意力机制捕获长程依赖。当前研究趋势结合神经符号方法和生成模型,以提高预测精度和可解释性。不同方法各具优势,需根据数据特性和预测需求选择。

技术引领业务创新 991

laravel实现Model的setAttribute、getAttribute、scopeQuery方法

首先要定义一个Model 1.getAttribute的实现 请getFooAttribute在模型上创建一个方法,其中Foo包含您要访问的列的“studly”外壳名称。在这个例子中,我们将为first_name属性定义一个访问器。尝试检索sex属性值时,Eloquent会自动调用访问者: <?php namespace App; use Illuminate\Database\El...

WXiangQian 1万+

从零构建个人知识库:Obsidian与Git实践打造可生长的第二大脑

在信息爆炸的时代,如何有效管理个人知识资产,构建一个可检索、可关联、可生长的个人知识库,成为提升学习效率和创造力的关键。其核心原理在于通过系统化的信息架构与工作流设计,将碎片化信息转化为结构化的知识网络。从技术价值看,这不仅是笔记方法的升级,更是个人知识管理(PKM)和思维模式的革新,能有效对抗信息过载与知识孤岛。实践中,以Obsidian为代表的本地Markdown笔记软件,结合双向链接和关系图谱功能,为知识网络的构建提供了强大支撑;而引入Git进行版本控制,则确保了知识资产的历史可追溯性与安全备份。这种

weixin_28836989的博客 302

php setattribute,laravel实现Model的setAttribute、getAttribute、scopeQuery方法

原标题:laravel实现Model的setAttribute、getAttribute、scopeQuery方法首先要定义一个Model1.getAttribute的实现请getFooAttribute在模型上创建一个方法,其中Foo包含您要访问的列的“studly”外壳名称。在这个例子中,我们将为first_name属性定义一个访问器。尝试检索sex属性值时,Eloquent会自动调用访问者:...

weixin_39949954的博客 623

用Omniverse Kit开发第一个USD插件:从环境配置到实战案例(Python 3.7版)

本文详细介绍了如何使用NVIDIA Omniverse Kit和Python 3.7开发第一个USD插件,涵盖从环境配置到实战案例的全过程。通过创建可实时同步材质属性的USD插件,开发者可以快速掌握Omniverse开发框架,提升3D内容创作效率。

x8y9z0的博客 589

大学物理第二章 质点动力学详解

大学物理第二章 质点动力学概念详解

weixin_63026364的博客 1万+

laravel5.6 Attribute的使用

Attribute可以给返回值中加上数据表中没有的值,或者修改查到的结果的格式,或者对查询结果某些字段进行修改后返回,下面介绍一下使用方法 首先在模型里加入appends,数组中填写返回值中想要新增的字段名(建议原字段名+标识的格式) protected $appends = ['file_size_human', 'subject_code_human']; 这里2个字段分别是文件大小比...

张胜楠的博客 5266

Cadence 16.6与17.4双版本共存避坑指南:从安装顺序到环境变量配置

本文是一份详细的Cadence 16.6与17.4双版本共存实战指南。针对硬件工程师和PCB设计者同时处理新旧项目的需求,文章深入剖析了版本冲突根源,并提供了从安装顺序、环境隔离到故障排查的完整解决方案。核心在于通过环境变量精细化管理与脚本控制,实现两个版本的稳定共存与无缝切换,有效解决了文件关联混乱、交互布局失效等常见问题。

html8的博客 985

laravel getattributes 如何把原值也返回_Laravel使用Observer(观察者)实现日志管理模块...

写在前面:这里实现日志管理写了两篇,第一篇是简单的模型增删改监听并记录日志。第二篇主要介绍的是通过导入文件进行批量数据处理无法很好的被监听处理到,这一部分的数据处理逻辑如何被记录下来。详细请看Laravel日志管理记录导入文件后的数据变化1、创建observer文件,我这里是要记录仓库库存模块的操作日志,所以执行下面的语句,会在app/Observers下面创建WarehouseInventory...

weixin_32955881的博客 865

Docker/Hyper-V/Wsl2等虚拟化组件一键切换工具 (附源码, Docker Desktop开发模式与三角洲游戏模式一键切换工具)

开启 Docker、Hyper-V 或 WSL2 后游戏无法启动?🎮💻 本文教你用一键批处理工具⚡快速切换“开发/游戏模式”,开发娱乐两不误!🔄✨

XiaoqiangClub的博客 702

ProcessingJoy —— 最简单的实时流体模拟【JAVA】

实现基于非常非常经典的 Paper ——Jos Stam 的Real-Time Fluid Dynamics for Games 代码和注释 float visc = 0.0f; float diff = 0.0f; int N = 250; int size = (N + 2) * (N + 2); float[] u = new float[size]; // 速度, 水平/竖直 float[] v = new float[size]; float[] u_prev = new fl...

ShaderJoy 的兴趣技术杂货铺 2816

推荐使用:Laravel Attributes - 简化模型属性管理的神器!

推荐使用:Laravel Attributes - 简化模型属性管理的神器! 项目地址:https://gitcode.com/gh_mirrors/lar/laravel-attributes 在开发过程中,有时我们需要为模型添加额外的非结构化数据,这些数据可能是动态的,且不固定在数据库表中的字段。Laravel Attributes 是一个完美的解决方案,它让你在 Laravel 框架中轻松地...

gitblog_00009的博客 701

基于Python的智能动漫更新监控爬虫系统:从原理到实战

本文详细介绍了如何使用Python构建一个智能化的动漫更新监控系统,涵盖从基础爬虫到高级自动化监控的全套解决方案。文章将深入探讨最新的网络爬虫技术,包括异步请求、反反爬策略、智能解析算法等,并提供完整的代码实现和性能优化方案。通过本系统,用户可以实时获取多个动漫平台的更新信息,并通过多种渠道接收通知。关键词:Python爬虫、动漫监控、自动化通知、异步爬虫、反反爬策略。

2201_76125261的博客 902

laravel setxxAttribute和getxxAttribute的使用

setxxAttribute 在设置(sql: insert update) 的时候 会将$obj->xx = 'value'的时候, 操作数据库之前 自动转化一下 getxxAttribute 在获取xx属性的时候 $obj->xx 会转化 示例: //获取之前首字母大写 public function getFirstNameAttribute...

lxw1844912514的博客 3950

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

laravel 变量符_使用访问器和变量自动格式化Laravel数据库字段

laravel 变量符There's a really neat feature in Laravel that often gets overlooked because of the feature's complicated sounding name. We're talking about accessors and mutators. Laravel中有一个真正整洁的功能,由于其复杂...

culiu9261的博客 809

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Laravel 修改器:优化数据处理的利器

在 Laravel 中,修改器(Mutators)是一种强大的功能,可以让你对模型的属性进行灵活的处理和转换。通过使用修改器,你可以对模型的属性进行格式化、计算或转换,以满足特定的业务需求。通过定义和使用修改器,你可以轻松地对模型的属性进行格式化、计算或转换,以满足特定的业务需求。修改器是 Laravel 提供的强大工具之一,可以优化数据处理过程,并提高代码的可读性和可维护性。通过定义修改器方法,你可以修改属性的值,使其符合特定的格式或逻辑。获取属性值时,修改器会自动触发,并将属性值转换为指定的形式。

PqjoPuppet的博客 730

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

lavarel Model通过 get字段名Attribute($value)处理返回数据

Lavarel框架在模型中添加如下方法,读取数据时候处理返回数据 例如:数据表中是相对路径,读取的时候加上域名返回绝对路径,这样可以省去后期的处理 //图片路径(相对路径和绝对路径) public function getPicAttribute($value) { return ['src' => $value, 'url' => oss_url($value)]; } 读取数据的结果如下图 ...

qq_41688060的博客 485

laravel更改:attributes值

最近在学习laravel框架,资料不是很多,大多都是要到google上去找. 觉得应该把自己解决过的问题贴上来供还不会的同学参考一下.   今天在开发中用了一下laravel的validator,也就是验证器.  然后我把本地化配置为 'zh_cn', 自己在lang目录下新建了一个zh_cn文件夹,把validation.php写好了. 测试一下发现,validator返回来的错误信息是

FOCUS still waiting 3653

laravel mysql 时区_php – 如何更新Laravel Eloquent管理的时间戳(created_at和updated_at)的时区?...

我知道这个问题有点陈旧,但我在尝试提出相同的解决方案时偶然发现了它,并希望分享我如何解决它.我的建议是不要更改存储消息的时区.将它们作为UTC存储在数据库中.将存储设置保持为一个恒定的参照系,然后将其转换为您需要显示的任何时区,从长远来看将为您节省大量的麻烦.作为其中一个令人头疼的例子,想象两个人试图在不同的时区协调会议时间,其中一个人观察DST而一个人没有,你需要在每个用户的当地时间显示时间.将...

weixin_34792272的博客 614

Laravel-功能总结

1.单行为控制器 //控制器 public function __invoke(){ // } //路由 Route::get('demo19', 'Test\TestController'); 2.路由回退 //没有找到会运行此路由 //放到最底部 Route::fallback(function () { return redirect('/'); }); 3.路由信息 //当前路由信息 dump(Route::current()); //当前路由的别名

叶子 1385

Laravel Attributes 项目教程

Laravel Attributes 项目教程 1. 项目介绍 Laravel Attributes 是一个用于简化 Laravel 模型属性管理的开源包。它允许开发者轻松地为任何模型创建和管理属性,支持多态关系,使得属性管理变得更加灵活和高效。 主要特性: 多态属性:支持为任何模型创建多态属性。 简化管理:通过简单的 API 接口,轻松管理模型属性。 灵活配置:提供丰富的配置选项,满足不同项目...

gitblog_00570的博客 459

php model get set,laravel实现Model的setAttribute、getAttribute、scopeQuery方法

首先要定义一个Model1.getAttribute的实现请getFooAttribute在模型上创建一个方法,其中Foo包含您要访问的列的“studly”外壳名称。在这个例子中,我们将为first_name属性定义一个访问器。尝试检索sex属性值时,Eloquent会自动调用访问者:namespace App;use Illuminate\Database\Eloquent\Model;clas...

weixin_32165903的博客 629

laravel模型获取修改前的值

前言 在最近的工作中遇到了这样一个问题,在使用laravel 的model 模型获取到的数据后对原数据进行了修改,可是到后面发现原数据还要用,可是原数据已经被覆盖了,因为之前会存到另外一个变量里,但是由于会占用多余的内存。所以就存在了一个变量里。于是在重新看了一遍手册后发现了laravel model的一个函数。 下面是我随便拿了个数据。 一、相关函数 $oldValue = $AdminObj->getOriginal('数据库列名');//获取原始数据 二、解释 1.model $obj = .

qq_43789643的博客 2600

laravel 5.1 Model 属性详解

<?php namespace Illuminate\Database\Eloquent; /** * 下面提到某些词的含义: * 1、覆盖: 在继承该类 \Illuminate\Database\Eloquent\Model 的自定义的模型类中, 定义一个同名 field,值不一样 */ abstract class Model1 implement...

weixin_34124577的博客 350

Laravel中访问器&修改器

访问器和修改器允许你在获取模型属性或设置其值时格式化 Eloquent 属性。例如,你可能想要使用 Laravel 加密器对存储在数据库中的数据进行加密,并且在 Eloquent 模型中访问时自动进行解密。 访问器 举个例子,有下面这么一个成绩表grade id name math_grade eng_grade 1 小王 78 88 2 小红 99 100 我们想计算小王和小红的总成绩(即数学成绩+英语成绩),这个时候如果在grade里添加一个total_score的字段,可能会让

a549654065的博客 729

Laravel 自带时间处理函数 - Carbon 的 diffForHumans 方法

Carbon 是继承自 PHP DateTime 类 的子类,但比后者提供了更加丰富、更加语义化的 API。其中一个比较实用的 API 就是 diffForHumans 方法,几乎每个用 Laravel 构建的项目中都有用到它。 比如,一个博客系统里的文章发布时间,显示格式可能就像下面这样: **距离现在时间** **显示格式** &lt; 1小时 ...

子恒|Haley 3207
上一篇: laravel 5.2 任务调度
下一篇: MySQL复制表
小Z笔记
博客等级 码龄9年 11粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值