Laravel中9个不经常用的小技巧汇总

前言

众所周知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();

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。

(0)

相关推荐

  • Laravel框架路由配置总结、设置技巧大全

    基本路由 您的应用程序的绝大多数路由将在 app/routes.php 文件中定义.Laravel 中最简单的路由由一个 URI 和一个闭包调用组成. 基本 GET 路由 复制代码 代码如下: Route::get('/', function() { return 'Hello World'; }); 基本 POST 路由 复制代码 代码如下: Route::post('foo/bar', function() { return 'Hello World'; }); 注册一个路由以响应所有 HT

  • Laravel框架之blade模板新手入门教程及小技巧

    简介 Blade 是 Laravel 所提供的一个简单且强大的模板引擎.相较于其它知名的 PHP 模板引擎,Blade 并不会限制你必须得在视图中使用 PHP 代码.所有 Blade 视图都会被编译缓存成普通的 PHP 代码,一直到它们被更改为止.这代表 Blade 基本不会对你的应用程序生成负担. Blade 视图文件使用 .blade.php 做为扩展名,通常保存于 resources/views 文件夹内. 为什么要使用blade模板 容易理解,思路清晰 方便,直接可以在框架里使用,可以直

  • 详谈PHP程序Laravel 5框架的优化技巧

    Laravel是一个功能强大的框架,组件很多,代码也很庞大,它的易用方便是牺牲了性能的,即便如此它仍然是一个优秀的框架,但在正式环境下要做好优化提升网站的打开速度 接下来分享一些开发的最佳实践,还有调优技巧,大家有别的建议也欢迎留言讨论. 这里是简单的列表: 配置信息缓存 artisan config:cache 路由缓存 artisan route:cache 类映射加载优化 artisan optimize 自动加载优化 composer dumpautoload 使用 Memcached

  • PHP框架Laravel的小技巧两则

    用 Laravel 作为 PHP 开发框架很久了,但是有些官方文档中没有覆盖到的地方,每隔一段时间又会忘记.最近做了一点简单的整理,顺便记录下来备忘. 1. Route::controller 路由命名: 用 Route::controller 可以减少路由定制中的大量工作,但是有时候需要对某个特定的路由命名以便使用,但是 Route::controller 方法是批量指定了一个 Controller 中所有方法的路由,这要怎么命名呢?可以用controller($uri, $controlle

  • laravel技巧之查询构造器Query Builder叠加链式调用的方法

    查询构造器简介 Laravel查询构造器(query builder)提供方便.流畅的接口,用来建立及执行数据库查找语法 使用PDO参数绑定,以保护应用程序免于SQL注入.因此传入的参数不需额外转义特殊字符 基本可以满足所有的数据库操作,而且在所有支持的数据库系统上都可以执行 引言 今天给大家介绍一下laravel查询构造器的一个小技巧,在官方文档示例中没有详细提到,也不是啥高端技巧,可能很多人在用了,不知道的同学可以看看. 在业务代码中经常会根据不同条件来查询,举个简单例子,我们现在要查询用户

  • Laravel中9个不经常用的小技巧汇总

    前言 众所周知Laravel是一套简洁.优雅的PHP Web开发框架(PHP Web Framework).下面这篇文章主要给大家总结了一些Laravel不经常用的小技巧,下面话不多说了,来一起看看详细的介绍吧 1. 更新父表的timestamps 如果你想在更新关联表的同时,更新父表的timestamps,你只需要在关联表的model中添加touches属性. 比如我们有Post和Comment两个关联模型 <?php namespace App; use Illuminate\Databas

  • Python中使用filter过滤列表的一个小技巧分享

    有的时候使用dir(Module),可以查看里面的方法,但是模块自带的属性"__"开头的也会显示,如下: >>> import random >>> dir(random) ['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', 'WichmannHill', '_Buil tinMethodType', '_M

  • 详解Python中正则匹配TAB及空格的小技巧

    在正则中,使用.*可以匹配所有字符,其中.代表除\n外的任意字符,*代表0-无穷个,比如说要分别匹配某个目录下的子目录: >>> import re >>> match = re.match(r"/(.*)/(.*)/(.*)/", "/usr/local/bin/") >>> match.groups() ('usr', 'local', 'bin') >>> 比如像上面,使用(.*)就能很好

  • Vue项目中最新用到的一些实用小技巧

    写在前面 在最近的 Vue 项目中,为了完成需求使用了一些小技巧,做个笔记,或许也能帮到道友. 阅读重点 需求一:为路径配置别名 在开发过程中,我们经常需要引入各种文件,如图片.CSS.JS等,为了避免写很长的相对路径(../),我们可以为不同的目录配置一个别名. 找到 webpack.base.config.js 中的 resolve 配置项,在其 alias 中增加别名,如下: 创建一个 CSS 文件,随便写点样式: .avatar display: flex; justify-conten

  • 在asp.net中操作sql server数据库的一些小技巧

    1.给数据库语句参数传递 向数据库操作语句传递参数可以通过存储过程实现,这里给出另外两种简便易捷的方法: 可以在C#中通过字符串操作将参数直接传入SQL语句变量中,例如: string s="Davolio"; string sql= "select * from employees where LastName="+"'"+s+"'" 相当于写入SQL语句: select * from employees where Las

  • Python中AND、OR的一个使用小技巧

    python中的and-or可以用来当作c用的?:用法.比如 1 and a or b,但是需要确保a为True,否则a为False,还要继续判断b的值,最后打印b的值. 今天看到一个好方法避免这种情况,记录一下: 复制代码 代码如下: (1 and [a] or [b])[0] 可以保证[a]为True.

  • 分享Javascript中最常用的55个经典小技巧

    1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键<table border oncontextmenu=return(false)><td>no</table> 可用于Table 2. <body onselectstart="return false"> 取消选取.防止复制 3. onpaste="return false" 不

  • 简单了解将WordPress中的工具栏移到底部的小技巧

    从 WordPress 3.1 开始引入了工具栏的概念,当用户登录后在前台和后台的页面顶部会显示一个黑色的工具栏,通过工具栏可以快捷地新建文章.页面.媒体.用户,以及查看文章和评论等功能,如下图: 有些WordPress用户不喜欢这个工具栏,纷纷选择将它移除.话说这个工具栏还是有点用处的,你现在又多了一个选择,不喜欢它在顶部显示,那我们可以将这个工具栏移到页面底部,只需在当前主题的functions.php中加入以下php代码即可: function fb_move_admin_bar() {

  • vue.js项目中实用的小技巧汇总

    前言 Vue.js 是一套构建用户界面的 渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合.另一方面,Vue 完全有能力驱动采用单文件组件和 Vue 生态系统支持的库开发的复杂单页应用. # 在Vue 项目中引入Bootstrap 有时在vue项目中会根据需求引入Bootstrap,而Bootstrap又是依赖于jQuery的,在使用npm安装时,可能会出现一系列的错误 1.安装jQuery

  • SQL语句中OR和AND的混合使用的小技巧

    今天有这样得一个需求,如果登陆人是客服的话,会查询订单是'该客服'以及还没有匹配客服的,刚开始想的是直接在sql语句上拼写  or  assigned_id is null  的,测试了一下发现这样的话,前面的其他条件都没有用了 这样的话,第一个i.server_org_id = 4这个条件已经不适用了,,,,,,,,从这里可以知道AND 的优先级比OR的优先级高,先执行了前面的AND 语句,然后执行后面的OR语句,所以查出来的数据不是我想要的数据 后来又想了一下,可以先将对应的assigned

随机推荐