Laravel中10个有用的用法小结


Posted in PHP onMay 06, 2019

前言

本文给大家介绍了Laravel 中一些常用的用法,额,说不定你就用上了。。。

1. 在 find 方法中指定属性

User::find(1, ['name', 'email']);
User::findOrFail(1, ['name', 'email']);

2. Clone 一个 Model

用 replicate 方法可以克隆一个 Model

$user = User::find(1);
$newUser = $user->replicate();
$newUser->save();

3. 判断两个 Model 是否相同

检查两个 Model 的ID是否相同用 is 方法

$user = User::find(1);
$sameUser = User::find(1);
$diffUser = User::find(2);
$user->is($sameUser); // true
$user->is($diffUser); // false;

4. 重新加载一个 Model

$user = User::find(1);
$user->name; // 'Peter'
// 如果 name 更新过,比如由 peter 更新为 John
$user->refresh();
$user->name; // John

5. 加载新的 Model

$user = App\User::first();
$user->name;    // John
//
$updatedUser = $user->fresh(); 
$updatedUser->name;  // Peter
$user->name;    // John

6. 更新带关联的 Model

在更新关联的时候,使用 push 方法可以更新所有 Model

class User extends Model
{
 public function phone()
 {
  return $this->hasOne('App\Phone');
 }
}
$user = User::first();
$user->name = "Peter";
$user->phone->number = '1234567890';
$user->save(); // 只更新 User Model
$user->push(); // 更新 User 和 Phone Model

7. 自定义软删除字段

Laravel 默认使用 deleted_at 作为软删除字段,我们通过以下方式将 deleted_at 改成 is_deleted

class User extends Model
{
 use SoftDeletes;
  * deleted_at 字段.
  *
  * @var string
  */
 const DELETED_AT = 'is_deleted';
}

或者使用访问器

class User extends Model
{
 use SoftDeletes;
 
 public function getDeletedAtColumn(){
  return 'is_deleted';
 }
}

8. 查询 Model 更改的属性

$user = User::first();
$user->name; // John
$user->name = 'Peter';
$user->save();

dd($user->getChanges());
// 输出:
[
 'name' => 'John',
 'updated_at' => '...'
]

9. 查询 Model 是否已更改

$user = User::first();
$user->name;    // John
$user->isDirty();  // false 
$user->name = 'Peter'; 
$user->isDirty();  // true
$user->getDirty();  // ['name' => 'Peter']
$user->save();   
$user->isDirty();  // false

getChanges() 与 getDirty() 的区别

getChanges() 方法用在 save() 方法之后输出结果集

getDirty() 方法用在 save() 方法之前输出结果集

10. 查询修改前的 Model 信息

$user = App\User::first();
$user->name;     //John
$user->name = "Peter";   //Peter
$user->getOriginal('name'); //John
$user->getOriginal();   //Original $user record

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
PHP VS ASP
Oct 09 PHP
用PHP实现将GB编码转换为UTF8
Nov 25 PHP
PHP序列号生成函数和字符串替换函数代码
Jun 07 PHP
php获取新浪微博数据API实例
Nov 12 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
Jun 05 PHP
php获取文章上一页与下一页的方法
Dec 01 PHP
php操作(删除,提取,增加)zip文件方法详解
Mar 12 PHP
typecho插件编写教程(六):调用接口
May 28 PHP
PHP中array_keys和array_unique函数源码的分析
Feb 26 PHP
php基于dom实现读取图书xml格式数据的方法
Feb 03 PHP
Laravel框架分页实现方法分析
Jun 12 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
Mar 25 PHP
Mac下快速搭建PHP开发环境步骤详解
May 05 #PHP
ThinkPHP3.2框架操作Redis的方法分析
May 05 #PHP
tp5框架内使用tp3.2分页的方法分析
May 05 #PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
May 05 #PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
May 05 #PHP
php实现的顺序线性表示例
May 04 #PHP
TP5.0框架实现无限极回复功能的方法分析
May 04 #PHP
You might like
Protoss建筑一览
2020/03/14 星际争霸
在Laravel中使用DataTables插件的方法
2018/05/29 PHP
一个javascript参数的小问题
2008/03/02 Javascript
分享8款优秀的 jQuery 加载动画和进度条插件
2012/10/24 Javascript
JavaScript异步编程Promise模式的6个特性
2014/04/03 Javascript
JavaScript使用HTML5的window.postMessage实现跨域通信例子
2014/04/11 Javascript
JavaScript中使用stopPropagation函数停止事件传播例子
2014/08/27 Javascript
JavaScript中的索引数组、关联数组和静态数组、动态数组讲解
2014/11/08 Javascript
jquery实现未经美化的简洁TAB菜单效果
2015/08/28 Javascript
js实现拖拽效果(构造函数)
2015/12/14 Javascript
基于javascript制作微博发布栏效果
2016/04/04 Javascript
使用JavaScript实现弹出层效果的简单实例
2016/05/31 Javascript
jQuery针对input的class属性写了多个值情况下的选择方法
2016/06/03 Javascript
用js动态添加html元素,以及属性的简单实例
2016/07/19 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
2016/08/02 Javascript
jQuery实现鼠标悬停3d菜单展开动画效果
2017/01/19 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
mockjs,json-server一起搭建前端通用的数据模拟框架教程
2017/12/18 Javascript
JS实现DOM删除节点操作示例
2018/04/04 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
2018/10/28 Javascript
jQuery层叠选择器用法实例分析
2019/06/28 jQuery
js getBoundingClientRect使用方法详解
2019/07/17 Javascript
vant 时间选择器--开始时间和结束时间实例
2020/11/04 Javascript
vue使用echarts图表自适应的几种解决方案
2020/12/04 Vue.js
python UNIX_TIMESTAMP时间处理方法分析
2016/04/18 Python
python中lambda()的用法
2017/11/16 Python
pandas 时间格式转换的实现
2019/07/06 Python
Python3实现二叉树的最大深度
2019/09/30 Python
Python实现自动装机功能案例分析
2020/10/22 Python
利用python 下载bilibili视频
2020/11/13 Python
Python实现FTP文件定时自动下载的步骤
2020/12/19 Python
建筑班组长岗位职责
2014/01/02 职场文书
2014年大学生党员自我评议
2014/09/22 职场文书
学位证书委托书
2014/09/30 职场文书
医德医风自我评价2015
2015/03/03 职场文书
2016圣诞节贺卡寄语
2015/12/07 职场文书