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分页函数
Oct 09 PHP
消息持续发送的完整例子
Oct 09 PHP
php zend 相对路径问题
Jan 12 PHP
php实现递归与无限分类的方法
Feb 16 PHP
php中实现可以返回多个值的函数实例
Mar 21 PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 PHP
orm获取关联表里的属性值
Apr 17 PHP
Laravel5.4框架使用socialite实现github登录的方法
Mar 20 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
Mar 22 PHP
PHP 实现 WebSocket 协议原理与应用详解
Apr 22 PHP
PHP 裁剪图片
Mar 09 PHP
php 文件上传至OSS及删除远程阿里云OSS文件
Jul 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
基于mysql的bbs设计(一)
2006/10/09 PHP
php生成数组的使用示例 php全组合算法
2014/01/16 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
PHP中session跨子域的三种实现方法
2016/07/25 PHP
PHP快速排序quicksort实例详解
2016/09/28 PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
2017/06/30 PHP
改版了网上的一个js操作userdata
2007/04/27 Javascript
javascript中的prototype属性实例分析说明
2010/08/09 Javascript
jquery之empty()与remove()区别说明
2010/09/10 Javascript
jQuery中ajax的使用与缓存问题的解决方法
2013/12/19 Javascript
jQuery 设置 CSS 属性示例介绍
2014/01/16 Javascript
多个jQuery版本共存的处理方案
2015/03/17 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
2015/05/16 Javascript
一个炫酷的Bootstrap导航菜单
2016/12/28 Javascript
javascript 判断当前浏览器版本并判断ie版本
2017/02/17 Javascript
微信小程序实现锚点定位楼层跳跃的实例
2017/05/18 Javascript
JavaScript 高性能数组去重的方法
2018/09/20 Javascript
100行代码实现一个vue分页组功能
2018/11/06 Javascript
简单了解小程序+node梳理登陆流程
2019/06/24 Javascript
vue实现浏览器全屏展示功能
2019/11/27 Javascript
微信小程序去除左上角返回键的实现方法
2020/03/06 Javascript
解决vuex改变了state的值,但是页面没有更新的问题
2020/11/12 Javascript
[57:31]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第一场 2月1日
2021/03/11 DOTA
mac下pycharm设置python版本的图文教程
2018/06/13 Python
5款Python程序员高频使用开发工具推荐
2019/04/10 Python
python获取网络图片方法及整理过程详解
2019/12/20 Python
Python通过VGG16模型实现图像风格转换操作详解
2020/01/16 Python
3种适用于Python的疯狂秘密武器及原因解析
2020/04/29 Python
keras 解决加载lstm+crf模型出错的问题
2020/06/10 Python
HTML5实现动画效果的方式汇总
2016/02/29 HTML / CSS
函授毕业生自我鉴定范文
2014/03/25 职场文书
安全生产月演讲稿
2014/05/09 职场文书
初中班级口号
2014/06/09 职场文书
2014年人事专员工作总结
2014/11/19 职场文书
mysql sum(if())和count(if())的用法说明
2022/01/18 MySQL
Python数组变形的几种实现方法
2022/05/30 Python