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 相关文章推荐
PHP与SQL注入攻击[一]
Apr 17 PHP
Ajax PHP简单入门教程代码
Apr 25 PHP
非常精妙的PHP递归调用与静态变量使用
Dec 16 PHP
php5.5中类级别的常量使用介绍
Oct 02 PHP
PHPAnalysis中文分词类详解
Jun 13 PHP
php socket实现的聊天室代码分享
Aug 16 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
Nov 08 PHP
浅谈Laravel中的一个后期静态绑定
Aug 11 PHP
php post json参数的传递和接收处理方法
May 31 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
Dec 07 PHP
php函数式编程简单示例
Aug 08 PHP
在laravel中实现事务回滚的方法
Oct 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语法(5)
2006/10/09 PHP
php实现用户在线时间统计详解
2011/10/08 PHP
关于PHP的相似度计算函数:levenshtein的使用介绍
2013/04/15 PHP
PHP中$_SERVER的详细参数与说明介绍
2013/10/26 PHP
PHP 中使用ajax时一些常见错误总结整理
2017/02/27 PHP
php实现微信支付之现金红包
2018/05/30 PHP
phpfpm的作用和用法
2019/10/10 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
Javascript 获取滚动条位置等信息的函数
2009/09/08 Javascript
jquery构造器的实现代码小结
2011/05/16 Javascript
jquery属性过滤选择器使用示例
2013/06/18 Javascript
关于extjs4如何获取grid修改后的数据的问题
2013/08/07 Javascript
jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表
2015/08/26 Javascript
javascript中不易分清的slice,splice和split三个函数
2016/03/29 Javascript
jQuery实现的倒计时效果实例小结
2016/04/16 Javascript
全面解析node 表单的图片上传
2016/11/21 Javascript
BootStrap栅格系统、表单样式与按钮样式源码解析
2017/01/20 Javascript
js实现不提示直接关闭网页窗口
2017/03/30 Javascript
vue select二级联动第二级默认选中第一个option值的实例
2018/01/10 Javascript
Vue.js 踩坑记之双向绑定
2018/05/03 Javascript
通过实例解析javascript Date对象属性及方法
2020/11/04 Javascript
jQuery实现本地存储
2020/12/22 jQuery
[00:15]天涯墨客终极技能展示
2018/08/25 DOTA
python发送arp欺骗攻击代码分析
2014/01/16 Python
Python实现冒泡,插入,选择排序简单实例
2014/08/18 Python
python基于FTP实现文件传输相关功能代码实例
2019/09/28 Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
2021/02/24 Python
CSS3教程:边框属性border的极致应用
2009/04/02 HTML / CSS
购买限量版收藏品、珠宝和礼品:Bradford Exchange
2016/09/23 全球购物
KIEHL’S科颜氏官方旗舰店:源自美国的顶级护肤品牌
2018/06/07 全球购物
部门群众路线教育实践活动对照检查材料思想汇报
2014/10/07 职场文书
2015年乡镇卫生院妇幼保健工作总结
2015/05/19 职场文书
家长意见和建议怎么写
2015/06/04 职场文书
Python机器学习应用之工业蒸汽数据分析篇详解
2022/01/18 Python
【海涛dota】偶遇拉娜娅 质量局德鲁伊第一视角解说
2022/04/01 DOTA
Python四款GUI图形界面库介绍
2022/06/05 Python