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 一个页面执行时间类代码
Mar 05 PHP
php全排列递归算法代码
Oct 09 PHP
php的hash算法介绍
Feb 13 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
Dec 16 PHP
PHP基于phpqrcode生成带LOGO图像的二维码实例
Jul 10 PHP
php生成数字字母的验证码图片
Jul 14 PHP
php经典算法集锦
Nov 14 PHP
Symfony2安装第三方Bundles实例详解
Feb 04 PHP
Yii2中使用join、joinwith多表关联查询
Jun 30 PHP
PHP单元测试框架PHPUnit用法详解
Jan 23 PHP
解决laravel id非自增 模型取回为0 的问题
Oct 11 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
Dec 04 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标准库(PHP SPL)详解
2019/03/16 PHP
Laravel 添加多语言提示信息的方法
2019/09/29 PHP
php7 参数、整形及字符串处理机制修改实例分析
2020/05/25 PHP
Extjs ajax同步请求时post方式参数发送方式
2009/08/05 Javascript
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
2009/11/26 Javascript
JavaScript中的闭包原理分析
2010/03/08 Javascript
jquery获取input表单值的代码
2010/04/19 Javascript
Ajax异步提交表单数据的说明及方法实例
2013/06/22 Javascript
jquery mobile实现拨打电话功能的几种方法
2013/08/05 Javascript
复选框全选与全不选操作实现思路
2013/08/18 Javascript
js取消单选按钮选中并判断对象是否为空
2013/11/14 Javascript
jQuery实现返回顶部功能适合不支持js的浏览器
2014/08/19 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
moment.js轻松实现获取当前日期是当年的第几周
2015/02/05 Javascript
javascript中if和switch,==和===详解
2015/07/30 Javascript
jQuery点击改变class并toggle及toggleClass()方法定义用法
2015/12/11 Javascript
属于你的jQuery提示框(Tip)插件
2016/01/20 Javascript
vue自定义指令实现v-tap插件
2016/11/03 Javascript
全面解析node 表单的图片上传
2016/11/21 Javascript
前端js弹出框组件使用方法
2020/08/24 Javascript
jQuery UI Grid 模态框中的表格实例代码
2017/04/01 jQuery
Vue波纹按钮组件制作
2018/04/30 Javascript
实例详解Vue项目使用eslint + prettier规范代码风格
2018/08/20 Javascript
python爬虫之BeautifulSoup 使用select方法详解
2017/10/23 Python
python pygame模块编写飞机大战
2018/11/20 Python
python实现两个dict合并与计算操作示例
2019/07/01 Python
Python实现微信好友的数据分析
2019/12/16 Python
详解KMP算法以及python如何实现
2020/09/18 Python
惠普墨西哥官方商店:HP墨西哥
2016/12/01 全球购物
领导干部对照检查材料
2014/08/24 职场文书
学籍证明模板
2014/11/21 职场文书
硕士毕业答辩开场白
2015/05/27 职场文书
go语言求任意类型切片的长度操作
2021/04/26 Golang
SpringBoot生成License的实现示例
2021/06/16 Java/Android
Python Flask实现进度条
2022/05/11 Python
PostgreSQL出现死锁该如何解决
2022/05/30 PostgreSQL