laravel ORM序列化

在laravel项目 常常需要把eloquent ORM序列化为数组或者json,Eloquent 提供了便捷方法以便实现这些转换,以及控制哪些属性被包含到序列化中。

1.序列化为数组

$user = App\User::with(‘roles‘)->first();return $user->toArray();

2.序列化为json $user = App\User::find(1);return $user->toJson();

3.在json中隐藏属性 

在模型中定义$hidden属性 例如  protected $hidden = [‘password‘];

同理通过定义$visible 属性 来控制模型中模型数组或者json中的属性白名单。例如 protected $visible = [‘first_name‘, ‘last_name‘];

4.若要在模型中临时的暴露某个属性  return $user->makeVisible(‘attribute‘)->toArray();

5.若要追加数据库不存在的字段到数组或者json返回值时候 需要先定义一个访问器 

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * 为用户获取管理员标识
     *
     * @return bool
     */
    public function getIsAdminAttribute()
    {
        return $this->attributes[‘admin‘] == ‘yes‘;
    }
}定义好访问器后,添加字段名到该模型的 appends 属性
 protected $appends = [‘is_admin‘];


时间: 2024-08-05 04:04:22

laravel ORM序列化的相关文章

laravel orm进行增删改查

https://laravelacademy.org/post/9699.html 建议用DB门面直接操作数据库,因为ORM性能低.数据查询上面,ORM不会比DB差的,就比如with,是用了sql最基本的拆语句优化.ORM的损耗仅仅是代码层面的,这已经不算是问题了. ORM适用于一般到中等复杂度的查询,也适用于各种模型操作,比如有一个关系targets,你可以直接用targets()->delete()等等进行关系数据操作.ORM中的软删除,自动更新时间字段,字段保护,字段类型转换,都会在一些规

Laravel ORM 数据model操作

1.ORM操作需要创建对应的model class User extends Eloquent 2.有两种方式使用数据操作对象 a. 使用new关键字创建对象后执行对象的方法 b. 直接调用static方法(实际并发静态方法,而是fascade生成的) 3.常用数据操作 a.  User::find(1)    查找单条数据       b.  User::all()        查找所有数据       c.   User::find(1)->delete()    删除单条数据     

Laravel Eloquent ORM 数据model操作

Laravel ORM 数据model操作 注意:ORM关联操作最后一定要记得带get()方法!否则会获取不到数据,为null 如: posts表 comments表  id id  contents post_id comment post模型内定义一对多关系hasMany 1 //定义关联关系 2 public function comments(){ 3 return $this->hasMany(Comments::class,'post_id','id'); 4 } 1 //容器内调用

Laravel基础教程

系列文章首发平台为果冻想个人博客.果冻想,认真玩技术的地方.在这里果冻会分享他的技术心得,技术得失,技术人生.我在果冻想等待你,也希望你能和我分享你的技术得与失,期待. 以下教程为全网最全,最基础的Laravel入门教程. <Laravel初级教程之php artisan数据库迁移> <Laravel初级教程之插入初始化数据> <Laravel初级教程之路由> <Laravel初级教程之中间件> <Laravel初级教程之服务容器> <La

KOHANA3.3 ORM中文详解

ORM===校验:1.ORM内部为强制校验2.ORM外部校验 (保存,更新,插入时校验)过滤:校验不在包含过滤功能参数及方法变更:1.find不在带参数2.save拆分为create跟update,并增加校验类参数,规则为覆盖叠加3.factory为ORM重写,可传两参数,用MODEL只有一个参数4.find等查找不可用于已有实体的ORM5.校验过滤规则的转变6.unique指定字段的唯一判断函数融合数据库操作:数据库的CURD操作增加方法,方便使用. 方法及说明:A:ORM自动维护    字段

Enerprise Solution Main 启动方法源代码

.NET 系统以Main方法作为应用程序的启动入口点,Enterprise Solution的启动程序源代码如下: [STAThread] static void Main() { string MAIN_INSTANCE_KEY = "EnterpriseMain"; SingleProgramInstance mainInstance = new SingleProgramInstance(MAIN_INSTANCE_KEY); if (!mainInstance.IsSingle

?laravel使用ORM操作数据库

laravel使用ORM操作数据库 public function mode(){ //查询所有 $isok=Student::get(); 新增. (1) $isok=Student::create([ 'name'=>'123','pwd'=>'123' ]); (2) $stu=new Student(); $stu->name="123"; $stu->pwd="ww"; $isok= $stu->save(); //修改 $i

Laravel之Eloquent ORM

一.ORM编程思想 1.1 Active Record 设计模式 Active Record 是一种数据访问设计模式,它可以帮助你实现数据对象Object到关系数据库的映射.应用Active Record时,每一个类的实例对象唯一对应一个数据库表的一行(一对一关系).你只需继承一个abstract Active Record 类就可以使用该设计模式访问数据库,其最大的好处是使用非常简单 1.2 调试工具 Laravel Debugbar Installation: composer requir

drf框架 2 drf框架的请求生命周期(as_view和dispatch方法), 请求、解析、渲染、响应、异常, 序列化组件 ,ORM配置回顾(media文件配置),应用在settings.py中INSTALLED_APPS注册意义 ,数据库配置

应用是否需要在INSTALLED_APPS中注册 ''' 在没有使用到app的一些特殊操作时(比如数据库相关),不需要app的__init__文件注册时,文件夹可以不用注册,但是注册后,应用的所有功能都能使用 结论:所有应用都可以完成注册 ''' 数据库配置(全部在settings文件中完成即可) import pymysql pymysql.install_as_MySQLdb() DATABASES = { 'default': { 'ENGINE': 'django.db.backends