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自定义函数返回多个值
Nov 26 PHP
安装APACHE
Jan 15 PHP
PHP extract 将数组拆分成多个变量的函数
Jun 30 PHP
php 高性能书写
Dec 11 PHP
php 归并排序 数组交集
May 10 PHP
C#静态方法与非静态方法实例分析
Sep 22 PHP
8个必备的PHP功能开发
Oct 02 PHP
分享五个PHP7性能优化提升技巧
Dec 07 PHP
服务器迁移php版本不同可能诱发的问题
Dec 22 PHP
PHP封装返回Ajax字符串和JSON数组的方法
Feb 17 PHP
laravel 输出最后执行sql 附:whereIn的使用方法
Oct 10 PHP
实例化php类时传参的方法分析
Jun 05 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获取网络文件的实现代码
2010/01/01 PHP
php smarty模板引擎的6个小技巧
2014/04/24 PHP
PHP读取大文件末尾N行的高效方法推荐
2016/06/03 PHP
JavaScript判断两种格式的输入日期的正确性的代码
2007/03/25 Javascript
js内存泄露的几种情况详细探讨
2013/05/31 Javascript
网站基于flash实现的Banner图切换效果代码
2014/10/14 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
Bootstrap轮播图的使用和理解4
2016/12/14 Javascript
微信小程序 图片绝对定位(背景图片)
2017/04/05 Javascript
switchery按钮的使用方法
2017/12/18 Javascript
10行原生JS实现文字无缝滚动(超简单)
2018/01/02 Javascript
原生JS实现网页手机音乐播放器 歌词同步播放的示例
2018/02/02 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
2018/05/30 jQuery
vue中的ref和$refs的使用
2018/11/22 Javascript
微信小程序实现简单跑马灯效果
2020/05/26 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
Python中字符编码简介、方法及使用建议
2015/01/08 Python
python下setuptools的安装详解及No module named setuptools的解决方法
2017/07/06 Python
在python win系统下 打开TXT文件的实例
2018/04/29 Python
Python实现的爬取豆瓣电影信息功能案例
2019/09/15 Python
python装饰器使用实例详解
2019/12/14 Python
Mac中PyCharm配置Anaconda环境的方法
2020/03/04 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
2020/04/01 Python
使用Python实现微信拍一拍功能的思路代码
2020/07/09 Python
Python os库常用操作代码汇总
2020/11/03 Python
柯基袜:Corgi Socks
2017/01/26 全球购物
Skyscanner加拿大:全球旅行搜索平台
2018/11/19 全球购物
Shell如何接收变量输入
2012/09/24 面试题
机关财务管理制度
2014/01/17 职场文书
高一地理教学反思
2014/01/18 职场文书
简历的自我评价
2014/02/03 职场文书
运动会的口号
2014/06/09 职场文书
材料员岗位职责范本
2015/04/11 职场文书
麦田里的守望者读书笔记
2015/06/30 职场文书
go语言中json数据的读取和写出操作
2021/04/28 Golang
RPM包方式安装Oracle21c的方法详解
2021/08/23 Oracle