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 相关文章推荐
Discuz 模板语句分析及知识技巧
Aug 21 PHP
php 3行代码的分页算法(求起始页和结束页)
Oct 21 PHP
PHP 进程锁定问题分析研究
Nov 24 PHP
关于UEditor编辑器远程图片上传失败的解决办法
Aug 31 PHP
PHP-Fcgi下PHP的执行时间设置方法
Aug 02 PHP
PHP中使用FFMPEG获取视频缩略图和视频总时长实例
May 04 PHP
smarty模板引擎之配置文件数据和保留数据
Mar 30 PHP
浅谈PHP面向对象之访问者模式+组合模式
May 22 PHP
利用Laravel生成Gravatar头像地址的优雅方法
Dec 30 PHP
PHP实现函数内修改外部变量值的方法示例
Dec 28 PHP
Laravel框架实现多个视图共享相同数据的方法详解
Jul 09 PHP
浅谈PHP5.6 与 PHP7.0 区别
Oct 09 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防注入和XSS攻击通用过滤
2015/09/13 PHP
php实现异步数据调用的方法
2015/12/24 PHP
laravel http 自定义公共验证和响应的方法
2019/09/29 PHP
asp.net+js 实现无刷新上传解析csv文件的代码
2010/05/17 Javascript
JavaScript的null和undefined区别示例介绍
2014/09/15 Javascript
jQuery实现高亮显示的方法
2015/03/10 Javascript
分享十五款 jQuery 社交网络分享插件
2015/05/16 Javascript
JavaScript严格模式详解
2015/11/18 Javascript
什么是JavaScript中的结果值?
2016/10/08 Javascript
微信小程序 SocketIO 实例讲解
2016/10/13 Javascript
AngularJS获取json数据的方法详解
2017/05/27 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
如何实现一个webpack模块解析器
2018/10/24 Javascript
通过实例了解js函数中参数的传递
2019/06/15 Javascript
移动端JS实现拖拽两种方法解析
2020/10/12 Javascript
[10:49]2014国际邀请赛 叨叨刀塔第二期为真正的电竞喝彩
2014/07/21 DOTA
Python中用于去除空格的三个函数的使用小结
2015/04/07 Python
Python判断Abundant Number的方法
2015/06/15 Python
matplotlib调整子图间距,调整整体空白的方法
2018/08/03 Python
解决python线程卡死的问题
2019/02/18 Python
python实现抖音点赞功能
2019/04/07 Python
Python数据类型之Set集合实例详解
2019/05/07 Python
python flask解析json数据不完整的解决方法
2019/05/26 Python
pycharm 激活码及使用方式的详细教程
2020/05/12 Python
pygame用blit()实现动画效果的示例代码
2020/05/28 Python
台湾前三大B2C购物网站:MOMO购物网
2017/04/27 全球购物
英国探险旅游专家:Explore
2018/12/20 全球购物
外语系毕业生找工作的求职信
2013/11/28 职场文书
2014学习全国两会精神心得体会2000字
2014/03/11 职场文书
中华魂演讲稿
2014/05/13 职场文书
全国法制宣传日活动总结2014
2014/11/01 职场文书
五年级上册复习计划
2015/01/19 职场文书
绵山导游词
2015/02/05 职场文书
关于运动会的宣传稿
2015/07/23 职场文书
2016年优秀共青团员事迹材料
2016/02/25 职场文书
PYTHON InceptionV3模型的复现详解
2022/05/06 Python