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 相关文章推荐
WINDOWS服务器安装多套PHP的另类解决方案
Oct 09 PHP
教你如何把一篇文章按要求分段
Oct 09 PHP
PHP中遍历stdclass object的实现代码
Jun 09 PHP
codeigniter使用技巧批量插入数据实例方法分享
Dec 31 PHP
php生成excel文件的简单方法
Feb 08 PHP
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
Jun 12 PHP
php使用pdo连接mssql server数据库实例
Dec 25 PHP
ThinkPHP3.2.3实现分页的方法详解
Jun 03 PHP
ThinkPHP打水印及设置水印位置的方法
Oct 14 PHP
PHP实现的登录页面信息提示功能示例
Jul 24 PHP
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
Nov 06 PHP
laravel框架之数据库查出来的对象实现转化为数组
Oct 23 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函数ip2long转换IP时数值太大产生负数的解决方法
2013/06/06 PHP
利用php+mcDropdown实现文件路径可在下拉框选择
2013/08/07 PHP
php中多维数组按指定value排序的实现代码
2014/08/19 PHP
php实现插入排序
2015/03/29 PHP
PHP实现从上往下打印二叉树的方法
2018/01/18 PHP
javascript multibox 全选
2009/03/22 Javascript
IE8 下的Js错误HTML Parsing Error...
2009/08/14 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
2014/05/23 Javascript
js实现可得到不同颜色值的颜色选择器实例
2015/02/28 Javascript
JS控制弹出新页面窗口位置和大小的方法
2015/03/02 Javascript
jQuery拖拽排序插件制作拖拽排序效果(附源码下载)
2016/02/23 Javascript
移动端点击态处理的三种实现方式
2017/01/12 Javascript
BootStrap组件之进度条的基本用法
2017/01/19 Javascript
vue单页面应用打开新窗口显示跳转页面的实例
2018/09/21 Javascript
详解JavaScript栈内存与堆内存
2019/04/04 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
vue项目启动出现cannot GET /服务错误的解决方法
2020/04/26 Javascript
vue移动端的左右滑动事件详解
2020/06/17 Javascript
解决Vue的文本编辑器 vue-quill-editor 小图标样式排布错乱问题
2020/08/03 Javascript
分析Python的Django框架的运行方式及处理流程
2015/04/08 Python
python列表操作之extend和append的区别实例分析
2015/07/28 Python
Python字典简介以及用法详解
2016/11/15 Python
最近Python有点火? 给你7个学习它的理由!
2017/06/26 Python
基于Python函数的作用域规则和闭包(详解)
2017/11/29 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
2018/02/07 Python
Tensorflow进行多维矩阵的拆分与拼接实例
2020/02/07 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
2020/06/03 Python
Pycharm同步远程服务器调试的方法步骤
2020/11/04 Python
挪威户外活动服装和装备购物网站:Bergfreunde挪威
2016/10/20 全球购物
《王二小》教学反思
2014/02/27 职场文书
政府法律服务方案
2014/06/14 职场文书
语文教研活动总结
2014/07/02 职场文书
教师群众路线学习心得体会
2014/11/04 职场文书
初中教师德育工作总结2015
2015/05/12 职场文书
探究Mysql模糊查询是否区分大小写
2021/06/11 MySQL
Win10/Win11 任务栏替换成经典样式
2022/04/19 数码科技