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 相关文章推荐
Cannot modify header information错误解决方法
Oct 08 PHP
PHP学习笔记 (1) 环境配置与代码调试
Jun 19 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
Feb 16 PHP
session在php5.3中的变化 session_is_registered() is deprecated in
Nov 12 PHP
php导入csv文件碰到乱码问题的解决方法
Feb 10 PHP
PHP开发框架Laravel数据库操作方法总结
Sep 03 PHP
yii中widget的用法
Dec 03 PHP
PHP JSON格式的中文显示问题解决方法
Apr 09 PHP
php实现模拟post请求用法实例
Jul 11 PHP
PHPUnit测试私有属性和方法功能示例
Jun 12 PHP
php实现构建排除当前元素的乘积数组方法
Oct 06 PHP
php写app用的框架整理
Sep 29 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二维数组转成字符串示例
2014/02/17 PHP
php使用fsockopen函数发送post,get请求获取网页内容的方法
2014/11/15 PHP
redis+php实现微博(二)发布与关注功能详解
2019/09/23 PHP
奇妙的js
2007/09/24 Javascript
一个JavaScript防止表单重复提交的实例
2014/10/21 Javascript
jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
2015/08/21 Javascript
jQuery实现带有洗牌效果的动画分页实例
2015/08/31 Javascript
js中flexible.js实现淘宝弹性布局方案
2020/06/23 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
2016/02/17 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
VUE 3D轮播图封装实现方法
2018/07/03 Javascript
js的对象与函数详解
2019/01/21 Javascript
详解vue 不同环境配置不同的打包命令
2019/04/07 Javascript
node将geojson转shp返回给前端的实现方法
2019/05/29 Javascript
nodejs提示:cross-device link not permitted, rename错误的解决方法
2019/06/10 NodeJs
微信小程序 高德地图路线规划实现过程详解
2019/08/05 Javascript
原生javascript实现类似vue的数据绑定功能示例【观察者模式】
2020/02/24 Javascript
微信小程序实现组件顶端固定或底端固定效果(不随滚动而滚动)
2020/04/09 Javascript
小程序实现可拖动的悬浮按钮
2020/09/07 Javascript
Python中__init__和__new__的区别详解
2014/07/09 Python
一个基于flask的web应用诞生 组织结构调整(7)
2017/04/11 Python
python爬虫爬取淘宝商品信息
2018/02/23 Python
python 通过xml获取测试节点和属性的实例
2018/03/31 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
2019/01/17 Python
python简单验证码识别的实现方法
2019/05/10 Python
python绘制已知点的坐标的直线实例
2019/07/04 Python
学习Django知识点分享
2019/09/11 Python
python图片指定区域替换img.paste函数的使用
2020/04/09 Python
CSS3 创建网页动画实现弹跳球动效果
2018/10/30 HTML / CSS
Web时代变迁及html5与html4的区别
2016/01/06 HTML / CSS
澳大利亚领先的美容护肤品零售商之一:SkincareStore
2018/01/22 全球购物
运动会加油稿100字
2014/09/19 职场文书
大学生实习推荐信
2015/03/27 职场文书
《七律·长征》教学反思
2016/02/16 职场文书
海贼王十大潜力果实,路飞仅排第十,第一可毁世界(震震果实)
2022/03/18 日漫
MySQL远程无法连接的一些常见原因总结
2022/09/23 MySQL