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 相关文章推荐
支持oicq头像的留言簿(一)
Oct 09 PHP
vBulletin HACK----关于排版的两个HACK
Oct 09 PHP
php 中文和编码判断代码
May 16 PHP
php下删除一篇文章生成的多个静态页面
Aug 08 PHP
PHP获取昨天、今天及明天日期的方法
Feb 03 PHP
PHP打印输出函数汇总
Aug 28 PHP
PHP实现文件上传下载实例
Oct 18 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
Nov 25 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
Aug 03 PHP
php获取ajax的headers方法与内容实例
Dec 27 PHP
PHP命名空间namespace及use的简单用法分析
Aug 03 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
Feb 18 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
用PHP连接Oracle数据库
2006/10/09 PHP
js下函数般调用正则的方法附代码
2008/06/22 PHP
php str_pad 函数使用详解
2009/01/13 PHP
支付宝服务窗API接口开发php版本
2016/07/20 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
解决FLASH需要点击激活的代码
2006/12/20 Javascript
JQuery 学习笔记 element属性控制
2009/07/23 Javascript
用JavaScript隐藏控件的方法
2009/09/21 Javascript
基于jQuery制作迷你背词汇工具
2010/07/27 Javascript
javascript中方便增删改cookie的一个类
2012/10/11 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
jquery 实现复选框的全选操作实例代码
2017/01/24 Javascript
Angular指令之restict匹配模式的详解
2017/07/27 Javascript
微信小程序之滚动视图容器的实现方法
2017/09/26 Javascript
微信小程序选择图片和放大预览图片功能
2017/11/02 Javascript
浅谈webpack对样式的处理
2018/01/05 Javascript
jquery的 filter()方法使用教程
2018/03/22 jQuery
Element-ui之ElScrollBar组件滚动条的使用方法
2018/09/14 Javascript
微信小程序 image组件遇到的问题
2019/05/28 Javascript
VueCli3.0中集成MockApi的方法示例
2019/07/05 Javascript
vue随机验证码组件的封装实现
2020/02/19 Javascript
JavaScript HTML DOM 元素 (节点)新增,编辑,删除操作实例分析
2020/03/02 Javascript
vue v-model的用法解析
2020/10/19 Javascript
[15:35]教你分分钟做大人:天怒法师
2014/10/30 DOTA
[49:05]OG vs Newbee 2019DOTA2国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
Python批量查询域名是否被注册过
2017/06/21 Python
Python subprocess模块详细解读
2018/01/29 Python
Python实现自定义函数的5种常见形式分析
2018/06/16 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
美国五金商店:Ace Hardware
2018/03/27 全球购物
PHP开发的一般流程
2013/08/13 面试题
简单说说tomcat的配置
2013/05/28 面试题
前台领班岗位职责
2013/12/04 职场文书
新郎父亲婚宴答谢词
2014/01/11 职场文书
党的群众教育实践活动实施方案
2014/06/12 职场文书
Nginx快速入门教程
2021/03/31 Servers