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 批量删除数据的方法分析
Oct 30 PHP
php实现用户在线时间统计详解
Oct 08 PHP
PHP设计模式之命令模式的深入解析
Jun 13 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
Aug 19 PHP
深入浅析PHP无限极分类的案例教程
May 09 PHP
利用PHP自动生成印有用户信息的名片
Aug 01 PHP
php中mkdir()函数的权限问题分析
Sep 24 PHP
PHP面向对象程序设计之类与反射API详解
Dec 02 PHP
PHP简单获取随机数的常用方法小结
Jun 07 PHP
详解php框架Yaf路由重写
Jun 20 PHP
对laravel in 查询的使用方法详解
Oct 09 PHP
laravel 框架实现无限级分类的方法示例
Oct 31 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
漂亮但不安全的CTB
2006/10/09 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
JavaScript 页面编码与浏览器类型判断代码
2010/06/03 Javascript
JavaScript初学者应注意的七个细节详细介绍
2012/12/27 Javascript
JavaScript中跨域调用Flash的方法
2014/08/11 Javascript
jQuery实现的图片分组切换焦点图插件
2015/01/06 Javascript
分享十五款 jQuery 社交网络分享插件
2015/05/16 Javascript
JavaScript中实现map功能代码分享
2015/06/11 Javascript
JavaScript数组对象实现增加一个返回随机元素的方法
2015/07/27 Javascript
JavaScript编程中的Promise使用大全
2015/07/28 Javascript
AngularJs中route的使用方法和配置
2016/02/04 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
2016/02/24 Javascript
原生js获取元素样式的简单方法
2016/08/06 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
2017/01/23 Javascript
js模拟微博发布消息
2017/02/23 Javascript
基于JavaScript实现评论框展开和隐藏功能
2017/08/25 Javascript
AngularJS 中的数据源的循环输出
2017/10/12 Javascript
薪资那么高的Web前端必看书单
2017/10/13 Javascript
基于vue-resource jsonp跨域问题的解决方法
2018/02/03 Javascript
jQuery中each方法的使用详解
2018/03/18 jQuery
python 从远程服务器下载日志文件的程序
2013/02/10 Python
python实现猜数字游戏(无重复数字)示例分享
2014/03/29 Python
Python定时器实例代码
2017/11/01 Python
Python检测网络延迟的代码
2018/05/15 Python
提升Python程序性能的7个习惯
2019/04/14 Python
django使用admin站点上传图片的实例
2019/07/28 Python
纯css3实现图片翻牌特效
2015/03/10 HTML / CSS
材料物理专业大学毕业生求职信
2013/10/15 职场文书
事业单位辞职信范文
2014/01/19 职场文书
财政专业求职信范文
2014/02/19 职场文书
纪念一二九运动演讲稿
2014/09/16 职场文书
归元寺导游词
2015/02/06 职场文书
宿舍卫生管理制度
2015/08/05 职场文书
Python数据可视化之绘制柱状图和条形图
2021/05/25 Python
python用tkinter开发的扫雷游戏
2021/06/01 Python
MySQL性能指标TPS+QPS+IOPS压测
2022/08/05 MySQL