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 相关文章推荐
相对路径转化成绝对路径
Apr 10 PHP
解决php中Cannot send session cache limiter 的问题的方法
Apr 27 PHP
使用PHP实现二分查找算法代码分享
Jun 24 PHP
PHP 设计模式之观察者模式介绍
Feb 22 PHP
PHP调用Linux的命令行执行文件压缩命令
Jan 27 PHP
php有道翻译api调用方法实例
Dec 22 PHP
php利用header函数下载各种文件
Aug 24 PHP
php下载文件,添加响应头的简单实例
Sep 22 PHP
Thinkphp开发--集成极光推送
Sep 15 PHP
php从数据库读取数据,并以json格式返回数据的方法
Aug 21 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
Apr 15 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
Apr 23 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的ob_start();控制您的浏览器cache!
2007/02/14 PHP
PHP统计数值数组中出现频率最多的10个数字的方法
2015/04/20 PHP
PHP 搜索查询功能实现
2016/11/29 PHP
PHP数组对象与Json转换操作实例分析
2019/10/22 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
JS将秒换成时分秒实现代码
2013/09/03 Javascript
关于js内存泄露的一个好例子
2013/12/09 Javascript
Jqgrid设置全选(选择)及获取选择行的值示例代码
2013/12/28 Javascript
JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
2015/04/01 Javascript
再谈JavaScript线程
2015/07/10 Javascript
基于Node.js的JavaScript项目构建工具gulp的使用教程
2016/05/20 Javascript
基于vue+ bootstrap实现图片上传图片展示功能
2017/05/17 Javascript
简单谈谈关于 npm 5.0 的新坑
2017/06/08 Javascript
纯js实现画一棵树的示例
2017/09/05 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
详解Vue-axios 设置请求头问题
2018/12/06 Javascript
vue获取时间戳转换为日期格式代码实例
2019/04/17 Javascript
详解微信小程序的不同函数调用的几种方法
2019/05/08 Javascript
[53:03]Optic vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
深入浅析python定时杀进程
2016/06/06 Python
解决Django 在ForeignKey中出现 non-nullable field错误的问题
2019/08/06 Python
python将字母转化为数字实例方法
2019/10/04 Python
在keras中对单一输入图像进行预测并返回预测结果操作
2020/07/09 Python
Python监听键盘和鼠标事件的示例代码
2020/11/18 Python
一款CSS3实现多功能下拉菜单(带分享按)的教程
2014/11/05 HTML / CSS
CSS3实现的炫酷菜单代码分享
2015/03/12 HTML / CSS
CSS实现定位元素居中的方法
2015/06/23 HTML / CSS
施华洛世奇德国官网:SWAROVSKI德国
2017/02/01 全球购物
《乞巧》教学反思
2014/02/27 职场文书
晨会主持词
2014/03/17 职场文书
商场开业庆典策划方案
2014/06/02 职场文书
民警个人对照检查剖析材料
2014/09/17 职场文书
新学期红领巾广播稿
2014/10/04 职场文书
事业单位年度考核评语
2014/12/31 职场文书
遗嘱继承权公证书
2015/01/26 职场文书
公司奖励通知
2015/04/21 职场文书