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 相关文章推荐
回答PHPCHINA上的几个问题:URL映射
Feb 14 PHP
ajax实现无刷新分页(php)
Jul 18 PHP
PHP性能优化 产生高度优化代码
Jul 22 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
Dec 20 PHP
apache中为php 设置虚拟目录
Dec 17 PHP
PHP不使用递归的无限级分类简单实例
Nov 05 PHP
php微信公众号js-sdk开发应用
Nov 28 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
Dec 09 PHP
php实现简单加入购物车功能
Mar 07 PHP
PHP中TP5 上传文件的实例详解
Jul 31 PHP
php使用curl伪造浏览器访问操作示例
Sep 30 PHP
php的对象传值与引用传值代码实例讲解
Feb 26 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
常用星际术语索引(新手指南)
2020/03/04 星际争霸
PHP4之COOKIE支持详解
2006/10/09 PHP
APACHE的AcceptPathInfo指令使用介绍
2013/01/18 PHP
PHP判断函数是否被定义的方法
2019/06/21 PHP
js防止表单重复提交实现代码
2012/09/05 Javascript
jQuery学习笔记之jQuery中的$
2015/01/19 Javascript
JavaScript 正则表达式中global模式的特性
2016/02/25 Javascript
用jmSlip编写移动端顶部日历选择控件
2016/10/24 Javascript
angular2 组件之间通过service互相传递的实例
2018/09/30 Javascript
JavaScript常用事件介绍
2019/01/21 Javascript
VUE安装使用教程详解
2019/06/03 Javascript
vue实现直播间点赞飘心效果的示例代码
2019/09/20 Javascript
[02:32]DOTA2亚洲邀请赛 C9战队出场宣传片
2015/02/07 DOTA
[11:44]Ti9 OG夺冠时刻
2019/08/25 DOTA
Python中使用PyQt把网页转换成PDF操作代码实例
2015/04/23 Python
python遍历目录的方法小结
2016/04/28 Python
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
使用Python的package机制如何简化utils包设计详解
2017/12/11 Python
Python语言进阶知识点总结
2019/05/28 Python
Python基于smtplib模块发送邮件代码实例
2020/05/29 Python
Python爬虫之Spider类用法简单介绍
2020/08/04 Python
Python调用jar包方法实现过程解析
2020/08/11 Python
python用opencv 图像傅里叶变换
2021/01/04 Python
SKECHERS斯凯奇中国官网:来自美国的运动休闲品牌
2018/11/14 全球购物
英国婴儿及儿童产品商店:TigerParrot
2019/03/04 全球购物
阿里巴巴Oracle DBA笔试题答案-备份恢复类
2013/11/20 面试题
linux面试题参考答案(6)
2016/06/23 面试题
开办饭店创业计划书
2013/12/28 职场文书
大学生创业计划书的范文
2014/01/07 职场文书
运动会致辞稿50字
2014/02/04 职场文书
商场周年庆活动方案
2014/08/19 职场文书
学校群众路线专项整治方案
2014/10/31 职场文书
综合办公室主任岗位职责
2015/04/01 职场文书
JS不要再到处使用绝对等于运算符了
2021/04/30 Javascript
html中相对位置与绝对位置的具体使用
2022/05/15 HTML / CSS