Laravel中9个不经常用的小技巧汇总


Posted in PHP onApril 16, 2019

前言

众所周知Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。下面这篇文章主要给大家总结了一些Laravel不经常用的小技巧,下面话不多说了,来一起看看详细的介绍吧

1. 更新父表的timestamps

如果你想在更新关联表的同时,更新父表的timestamps,你只需要在关联表的model中添加touches属性。
比如我们有Post和Comment两个关联模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Comment extends Model
{
 /**
  * 要更新的所有关联表
  *
  * @var array
  */
 protected $touches = ['post'];

 /**
  * Get the post that the comment belongs to.
  */
 public function post()
 {
  return $this->belongsTo('App\Post');
 }
}

2. 懒加载指定字段

$posts = App\Post::with('comment:id,name')->get();

3. 跳转指定控制器并附带参数

return redirect()->action('SomeController@method', ['param' => $value]);

4. 关联时使用withDefault()

在调用关联时,如果另一个模型不存在,系统会抛出一个致命错误,例如 $comment->post->title,那么我们就需要使用withDefault()

...
public function post()
{
 return $this->belongsTo(App\Post::class)->withDefault();
}

5. 两层循环中使用$loop

在blade的foreach中,如果你想获取外层循环的变量

@foreach ($users as $user)  
 @foreach ($user->posts as $post)   
 @if ($loop->parent->first)    
  This is first iteration of the parent loop.   
 @endif  
 @endforeach 
@endforeach

6. 浏览邮件而不发送

如果你使用的是mailables来发送邮件,你可以只展示而不发送邮件

Route::get('/mailable', function () {
 $invoice = App\Invoice::find(1);
 return new App\Mail\InvoicePaid($invoice);
});

7. 通过关联查询记录

在hasMany关联关系中,你可以查询出关联记录必须大于5的记录

$posts = Post::has('comment', '>', 5)->get();

8. 软删除

查看包含软删除的记录

$posts = Post::withTrashed()->get();

查看仅被软删除的记录

$posts = Post::onlyTrashed()->get();

恢复软删除的模型

Post::withTrashed()->restore();

9. Eloquent时间方法

$posts = Post::whereDate('created_at', '2018-01-31')->get(); 
$posts = Post::whereMonth('created_at', '12')->get(); 
$posts = Post::whereDay('created_at', '31')->get(); 
$posts = Post::whereYear('created_at', date('Y'))->get(); 
$posts = Post::whereTime('created_at', '=', '14:13:58')->get();

总结

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

PHP 相关文章推荐
一个简洁的多级别论坛
Oct 09 PHP
站长助手-网站web在线管理程序 v1.0 下载
May 12 PHP
PHPMailer安装方法及简单实例
Nov 25 PHP
php 保留小数点
Apr 21 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
Apr 09 PHP
ThinkPHP3.1的Widget新用法
Jun 19 PHP
PHP微信开发之模板消息回复
Jun 24 PHP
thinkPHP自定义类实现方法详解
Nov 30 PHP
php使用imagecopymerge()函数创建半透明水印
Jan 25 PHP
PHP抽象类基本用法示例
Dec 28 PHP
php创建多级目录与级联删除文件的方法示例
Sep 12 PHP
PHP实现简易用户登录系统
Jul 10 PHP
Laravel框架自定义公共函数的引入操作示例
Apr 16 #PHP
Laravel框架文件上传功能实现方法示例
Apr 16 #PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
Apr 16 #PHP
PHP获取远程http或ftp文件的md5值的方法
Apr 15 #PHP
php文件操作之文件写入字符串、数组的方法分析
Apr 15 #PHP
PHP实现读取文件夹及批量重命名文件操作示例
Apr 15 #PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
Apr 15 #PHP
You might like
php中文本操作的类
2007/03/17 PHP
基于php实现长连接的方法与注意事项的问题
2013/05/10 PHP
php随机获取金山词霸每日一句的方法
2015/07/09 PHP
php实现无限级分类(递归方法)
2015/08/06 PHP
PHP中快速生成随机密码的几种方式
2017/04/17 PHP
php 将json格式数据转换成数组的方法
2018/08/21 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
2019/10/10 PHP
javascript之水平横向滚动歌词同步的应用
2007/05/07 Javascript
基于jQuery的Spin Button自定义文本框数值自增或自减
2010/07/17 Javascript
基于jQuery UI CSS Framework开发Widget的经验
2010/08/21 Javascript
jquery绑定原理 简单解析与实现代码分享
2011/09/06 Javascript
返回上一页并自动刷新的JavaScript代码
2014/02/19 Javascript
jQuery+ajax实现鼠标单击修改内容的思路
2014/06/29 Javascript
javascript实现图片左右滚动效果【可自动滚动,有左右按钮】
2016/09/19 Javascript
原生js实现无缝轮播图效果
2017/01/11 Javascript
jQuery 全选 全不选 事件绑定的实现代码
2017/01/23 Javascript
axios基本入门用法教程
2017/03/25 Javascript
JavaScript数据结构之二叉树的查找算法示例
2017/04/13 Javascript
vue checkbox 全选 数据的绑定及获取和计算方法
2018/02/09 Javascript
webpack中如何加载静态文件的方法步骤
2019/05/18 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
2019/09/17 Javascript
JS操作json对象key、value的常用方法分析
2019/10/29 Javascript
vue设置动态请求地址的例子
2019/11/01 Javascript
Centos5.x下升级python到python2.7版本教程
2015/02/14 Python
python实现带错误处理功能的远程文件读取方法
2015/04/29 Python
Django实现快速分页的方法实例
2017/10/22 Python
Python数据结构之双向链表的定义与使用方法示例
2018/01/16 Python
Python常见工厂函数用法示例
2018/03/21 Python
python中plot实现即时数据动态显示方法
2018/06/22 Python
Python高斯消除矩阵
2019/01/02 Python
python安装sklearn模块的方法详解
2020/11/28 Python
7 For All Mankind官网:美国加州洛杉矶的高级牛仔服装品牌
2018/12/20 全球购物
现金会计岗位职责
2013/12/05 职场文书
学生不参加考试检讨书
2015/02/19 职场文书
利用Python判断整数是否是回文数的3种方法总结
2021/07/07 Python
vue.js 使用原生js实现轮播图
2022/04/26 Vue.js