软删除功能实际上就是利用了全局作用域功能 实现一个全局作用域功能只需要定义一个实现Illuminate\Database\Eloquent\Scope接口的类,该接口只有一个方法apply,在该方法中增加查询需要的约束...,校验通过后才允许保存到数据库,可以在服务提供者中为模型的事件绑定监听 Eloquent提供了一些方法可以方便的来实现数据类型之间的转换。...假设我们有一个字段是first_name,当我们尝试去获取first_name的值的时候,getFirstNameAttribute方法将会被自动的调用 一个数组,该数组的key为要转换的属性名称,value为转换的数据类型,当前支持integer, real, float, double, string, boolean
本文是orm系列的第二篇,也是Eloquent演化的第一篇,Eloquent系列会尝试着讲清楚Eloquent是如何一步一步演化到目前功能强大的版本的,但是毕竟个人能力有限,不可能分析的非常完善,总会有不懂的地方...HasOne,即Relation,当我们调用Relation的方法时,是怎么处理的呢?...\Builder的一个封装,支持面向对象式的sql操作,我们下面来看下当我们使用HasOne的时候发生了什么。...以上就是我们分析的HasOne的实现,其他的关系都类似,此处不再重复,然后eager load的含义是指,当我们要加载多个数据的时候,我们尽可能用一条sql解决,而不是多条sql,具体来说如果我们有多个...到这,我们就分析完了eloquent在f6e2170版本上具有的功能了,到目前为止,eloquent的类图如下: 总结 目前,我们分析到的版本是f6e2170,已经具备了一个orm该需要的功能了,Connection
Eloquent是什么 Eloquent 是一个 ORM,全称为 Object Relational Mapping,翻译为 “对象关系映射”(如果只把它当成 Database Abstraction...() { return $this->hasOne('Account', 'user_id', 'id'); } } 然后,当我们需要用到这种关系的时候,该如何使用呢?...由于前面的 `find(10)` 已经锁定了 id = 10,所以这段函数对应的 SQL 为: `select * from account where user_id=10`。...pay: id ... ... user_id User 和 Pay 具有一对多关系,换句话说就是一个 User 可以有多个 Pay,这样的话,只在 Pay 表中存在一个 `user_id` 字段即可。...) { return $this->hasMany('Pay', 'user_id', 'id'); } } 然后,当我们需要用到这种关系的时候,该如何使用呢?
官方文档的 Eloquent 相关部分在这里。 什么是属性转换 转换一个属性值的意思是把它转换成某个特定的数据类型(或者是为了确保它是某个特定的数据类型)。...属性转换是 Eloquent 模型的一个功能特性,这个特性让我们可以赋予 Eloquent 模型中的某个属性转换为一个特定的数据类型。...提示:在以前版本中也可以这样做,但是必须为每个属性定义一个自动赋值的方法。而在新版本中可以通过单一的数组配置让模型自动完成这些工作。...这意味着假如你的数据是以特定的格式存储在数据库中,而你在使用时需要的是另外一种格式,现在你可以配置 Eloquent 模型自动完成两种格式之间的转换工作。 为什么要这样做?...这个数组变量 $casts 的作用就是告诉 Eloquent:“每次当我访问这个模型中的 is_admin 属性的时候,返回一个类型为 boolean 的值给我”。
②-e:允许对输入数据应用多条sed命令编辑 ③-i:用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出 动作: ①a\:追加,当前行后添加一行或多行。...添加多行时,除最后一行外,每行末尾需要用“\”代表数据未完结。 ②c\:行替换,用c后面的字符串替换原数据行,替换多行时,除最后一行外,每行末尾需用“\”代表数据未完结。...③i\:插入,在当期行前插入一行或多行。插入多行时,除最后一行外,每行末尾需要用“\”代表数据未完结。 ④d:删除,删除指定的行。 ⑤p:打印,输出指定的行。...PS.只要不加"-i"选项,就不会修改文件本身内容,只临时改变屏幕输出的内容。 例3."a\"追加,当前行后添加一行或多行。添加多行时,除最后一行外,每行末尾需要用“\”代表数据未完结。...本例为在第二行后追加hello\在第二行后追加hello、666 ? 例4."i\"插入,在当期行前插入一行或多行。插入多行时,除最后一行外,每行末尾需要用“\”代表数据未完结。
如果你的数据表里面不包含这两个字段,或者只包含一个,都需要设置 public $timestamps = false; 或者通过 CREATED_AT 和 UPDATED_AT 常量来设置自定义的创建和更新时间字段...属性为模型类指定使用哪个连接: protected $connection = 'connection_name'; 查询数据 日常开发中,大部分操作都是数据库中查询数据,Eloquent 模型了为我们提供了很多方法帮助我们从数据库中获取数据...$post->views); } } }); 除此之外,在 Eloquent 模型中还可以通过 cursor 方法每次只获取一条查询结果,从而最大限度减少内存消耗: foreach...执行上面的代码就会在数据库新增一条记录(我们在 Tinker 中执行上述代码): ? 我们先要创建一个新的 Post 模型实例,然后依次设置需要设置的字段,最后调用 save 方法保存即可。...同样,Eloquent 也为我们提供了快捷的更新方法 updateOrCreate,该方法首先会根据传入参数对模型对应记录进行更新,如果发现对应记录不存在,则会将更新数据作为初始数据插入数据库,并保存(
使用的 AutoCAD 为 2020 版本 文字样式,是一个 描述文字的样式的配置对象。创建文字实体时,需要设置对应的文字样式(通过 id 的方式指定)。...属性很多,本文只聚焦 字高(textSize) 这一个属性。另外还有一个让我无语的隐藏属性,后面会说。...当我们将字样字高设置为 0 时,原来的值会保存下来,保存在一个 隐藏属性 “原字高”(priorSize)上。 比如,你给字样字高设置为 2.5 保存,然后改成 0,保存。...这个 0 并不是没有意义的,接下来会说说字样字高为 0 的情况下在不同场景下的表现。 多行文字 创建多行文字,文字会使用一个默认字高,这个值会从 当前字样 中获取。...(DIMTXT 系统变量) 当标注样式的字样字高为非 0 值时,这个值会盖住标注样式的字高输入框,且不可编辑; 如果标注样式的字样字高为 0,那你可以随意编辑文字高度。
属性值为 string....$query->where('votes', '>', 100); } /** * 只包含激活用户的查询作用域 * * @return \Illuminate\Database\Eloquent...'type', $type); } // 使用动态作用域 $users = App\User::ofType('admin')->get(); 模型关联 一对一关联 // 拥有 class User extends...', ]); // 保存多个关联模型 $post = App\Post::find(1); $post->comments()->createMany([ [ 'message...除了自定义访问器和修改器, Eloquent 还可以自动转换日期字段为 Carbon 实例甚至 将文本转换为 JSON .
默认情况,pivot对象只包含两个关联模型的键。...`tagtable_type` = 'App\Tag' 关联查询 实际上前面提到的渴求式加载与懒惰式加载也归结于关联查询,这里将关联查询补充完整 当我们以动态属性的方式去访问关联关系时为懒惰式加载 如...,但这条记录的uid为null,前提是uid字段允许为空,如果不允许为空会抛出异常 空对象模型 如果外键字段uid允许为空,当我们访问Phone模型上的muser属性(注意这里是属性,而不是方法)时,默认返回...null,Eloquent允许我们为这种空对象定义一个默认的类型,这个对象类型在定义关联时指定,通过withDefault()方法(这个方法好像在前面提到过) withDefault()如果不指定值默认返回...中间表没有改变之前的记录(只看sid=1) 学号为1 的学生选修了课程id为1,2,3 使用sync进行同步关联 public function show(){ $stu = Stu
本文是orm系列的第三篇,也是Eloquent演化的第二篇,Eloquent系列会尝试着讲清楚Eloquent是如何一步一步演化到目前功能强大的版本的,但是毕竟个人能力有限,不可能分析的非常完善,总会有不懂的地方...Artisan,Artisan是 Laravel 自带的命令行接口名称,此处不做具体的介绍了,有机会再细说的,当我们在命令行中执行php artisan command的时候,会去调用migrateCommand...看完上面的最基本版本的migrator,我们跨越下直接来看tag v1.1.1版本的eloquent, git co v1.1.1 此版本是v4.0.0之前的一个版本,从这以后laravel会以组件的形式组织各个功能...*版本的时候,laravel/framework还采用的psr-0规范,所有其目录层级还是src/Illuminate/Database,在这个版本中有个新的目录Capsule,其下面是一个Manager...总结 从v4.0.0开始,基本Eloquent就已经固定了,到目前最新master分支上,目录结构也没有什么变化了,因此下一篇开始,我们会在最新版的基础上,分析下Eloquent的一些具体的实现,尽情期待
4)为配置文件去除#多行注释(!)...,代表强制退出但是不保存文件。 4)命令模式下的相关操作(!) ☆ 如何进入命令模式 答:在Linux操作系统中,当我们使用vim命令直接打开某个文件时,默认进入的就是命令模式。...第一步:首先要进入末行模式(在命令模式下输入冒号:) 第二步:根据需求替换内容 ① 只替换光标所在这一行的第一个满足条件的结果(只能替换1次) :s/要替换的关键词/替换后的关键词 + 回车 案例...Shift + i) 第五步:输入#号注释符 第六步:输入完成后,连续按两次Esc即可完成添加多行注释的过程 4)为配置文件去除#多行注释(!)...六、VIM编辑器实用功能 1)代码着色 之前说过vim 是vi 的升级版本,其中比较典型的区别就是vim 更加适合coding,因为vim比vi 多一个代码着色的功能,这个功能主要是为程序员提供编程语言升的语法显示效果
在第一章就有介绍到,数据库信息保存在项目根目录的 .env 文件中,找到相关的数据库信息,进行修改成自己的数据库配置保存即可。...Eloquent ORM Laravel 的 Eloquent ORM 提供了漂亮、简洁的 ActiveRecord 实现来和数据库交互。每个数据库表都有一个对应的「模型」用来与该表交互。...如果你不需要这两个字段,则需要在模型内将 $timestamps 属性设置为 false 模型获取 要对数据进行操作的第一步是获取操作对象。...本章只介绍几个常用的简单的获取数据的方法,详细方法会单独一章写出用作资料查询!...add/update new/获取一个Student对象 对各个字段名进行赋值 保存到数据库 use App\Student;//Student模型 $xiaoming = Student::find
截屏2020-07-01 下午11.13.13.png 那么此时,会有一个正式版和一个Alpha版本让你选择。Alpha版比正式版更新频率更高,新功能会优先在Alpha版上发布。...J 删除当前行与下一行内容合并成一行(光标未选中多行内容的时候) 或 将多行内容合并成一行(已选择需要合并的多行时) Option + Shift +↑ 向上复制一行 Option + Shift +...↓ 向下复制一行 Option + → 以单词为单位向后移动光标 Option + Shift + → 以单词为单位向后选中文本 查找替换 Command + F 查找 Command + Option...+ K Left 激活左侧编辑组 Command + K Right 激活右侧编辑组 文件管理 Command + N 新建文件 Command + O 打开文件 Command + S 保存文件 Command...,当然了喜欢支持正版的小伙伴也可以去某宝买一个,如果你特别有钱,那当我没说吧。
next命令 这个分单行版本的next命令和多行版本的next命令。...合并文本行(多行版本的next) 单行next命令会将数据流中的下一文本行移动到sed编辑器的工作空间(称为模式空间) 多行版本的next命令(N)会将下一行添加到模式空间中已有的文本后。...,第二个是多行打印(只打印模式空间的第一行) 这里要去理解模式空间的概念。...21.2 保持空间 1.模式空间(pattern space)是一块活跃的缓冲区,在sed编辑器上执行命令时它会保存待检查的文本,但它并不是sed编辑器保存文本的唯一区间。...还有另外一块缓冲区,叫保持空间(hold space)。在处理模式空间中的某些行时,可以用保持空间来临时保存一些行。
因此,ROS 2被构建为一组并行的软件包,可以与ROS 1并排安装并与它们互操作(例如,通过消息桥)。...在撰写本博文时,已经达到了第13个也是最后一个正式的ROS 1版本Noetic Ninjemys,并且是ROS 2的第一个LTS版本Foxy Fitzroy。...交通编辑器Traffic Editor Traffic Editor是用于创建和注释在RMF中使用的平面图的GUI。通过流量编辑器,可以创建用于RMF的流量模式,并引入仿真模型来增强虚拟仿真环境。...安装RMF必备条件 RMF的当前版本为1.0.2。 针对ROS Eloquent,并且针对Ubuntu Bionic 18.04 LTS发行了Debian二进制软件包。...作为RMF安装过程的第一步,将必须设置它们的库。 由于当前的二进制发行版是针对Ubuntu Bionic的,因此在继续安装之前,请确保匹配系统和版本。
今天在写一个模型版本控制的需求,目标就是模型有字段变化时创建版本记录,首先想到的肯定是用我之前写过的一个包:overtrue/laravel-versionable,原理很简单: 监听模型事件,当检测到属性值变化时...,选择已快照或者差异化获取变化的内容,存储到一个版本记录表当中 Eloquent 模型事件 模型事件相信大家都非常熟练了,一句话介绍就是:当模型有各种变化时,Laravel 会触发对应的事件通知,目前支持的事件有...所以有了事件通知就可以做很多事情了,我的这个包做了一个功能,模型可以自己动态决定是否要为当前变更创建版本,只需要在模型里重载一个方法返回布尔值即可: public function shouldVersioning...isDirty 也可以达到目标,就感觉 getChanges 更表意一些,结果就掉坑里了:只有更新时才有版本记录,创建时没有。...当我翻到源码的时候眼泪掉下来: getChanges 只在 Model::performUpdate() 这个方法时才会从 getDirty() 拷贝内容,而 getDirty() 的结果是只要赋值(fill
vim编辑器 1. 概念 一款编辑器,只负责写代码 2.安装 [yzq@VM-8-8-centos ~]$ sudo yum install vim 3....使用 1.使用一些按键没有反应 当我们 使用 vim +文件名 进入文件中时,发现一些按键 按了没有反应 这是因为vim是一个多模式的编辑器,默认在命令模式下,按键都被当做命令了 2....退出 w代表保存,q代表退出 1.保存退出 : 输入: wq 2.强制退出: 输入 :q! 3.强制保存并退出 输入:wq! 3. 整体概念图 4....复制粘贴 yy(光标所在行的复制) p(粘贴,默认为当前行的下一行) yy n p(复制n行) 当n为5时 复制光标所在的第五行的asd在第12行下粘贴 n yy (从当前光标所在复制多行...) 例如 : 12 yy 从第一行开始的一共12行复制,并在底部粘贴 7.剪切 dd 从光标所在行,输入dd ,则消失 p(粘贴) 输入p后,在第10行打印 n dd (剪切多行
软件版本:PHP 5.4+,MySQL 5.1+ 本文不推荐完全不懂 PHP 与 MVC 编程的人学习。本文不是 “一步一步跟我做” 教程。...本系列教程使用 Laravel 5.0 版本,5.1 版本去掉了本系列教程主要讲解的元素(Auth 系统),不建议使用 5.1 来学习。...在 Eloquent 中,数据库中每一张表对应着一个 Model 类(当然也可以对应多个)。...如果你从其他框架转过来,可能对这里一笔带过的 Model 部分很不适应,没办法,是因为 Eloquent 实在太强大了啦,真的没什么好做的,继承一下 Eloquent 类就能实现很多很多功能了。...如果你想深入地了解 Eloquent,可以阅读系列文章:深入理解 Laravel Eloquent(一)——基本概念及用法 ---- 接下来进行 Article 和 Page 类对应的 articles
因此,ROS 2被构建为一组并行的软件包,可以与ROS 1并排安装并与它们互操作(例如,通过消息桥)。...在撰写本博文时,已经达到了第13个也是最后一个正式的ROS 1版本Noetic Ninjemys,并且是ROS 2的第一个LTS版本Foxy Fitzroy。...RMF设计的原则之一是尽可能简化和标准化消息传递。 在下图的RMF Core中,可以看到当前所有复杂的交互和协调,归纳为14条标准消息: ?...安装RMF必备条件 RMF的当前版本为1.0.2。 针对ROS Eloquent,并且针对Ubuntu Bionic 18.04 LTS发行了Debian二进制软件包。...作为RMF安装过程的第一步,将必须设置它们的库。 由于当前的二进制发行版是针对Ubuntu Bionic的,因此在继续安装之前,请确保匹配系统和版本。
领取专属 10元无门槛券
手把手带您无忧上云