当前位置:编程学习 > > 正文

laravel有哪些长期支持版本(Laravel中9个不经常用的小技巧汇总)

时间:2022-03-28 01:21:29类别:编程学习

laravel有哪些长期支持版本

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

前言

众所周知Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。下面这篇文章主要给大家总结了一些Laravel不经常用的小技巧,下面话不多说了,来一起看看详细的介绍吧

1. 更新父表的timestamps

如果你想在更新关联表的同时,更新父表的timestamps,你只需要在关联表的model中添加touches属性。
比如我们有Post和Comment两个关联模型

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • <?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. 懒加载指定字段

  • ?
  • 1
  • $posts = App\Post::with('comment:id,name')->get();
  • 3. 跳转指定控制器并附带参数

  • ?
  • 1
  • return redirect()->action('SomeController@method', ['param' => $value]);
  • 4. 关联时使用withDefault()

    在调用关联时,如果另一个模型不存在,系统会抛出一个致命错误,例如 $comment->post->title,那么我们就需要使用withDefault()

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • ...
  • public function post()
  • {
  •  return $this->belongsTo(App\Post::class)->withDefault();
  • }
  • 5. 两层循环中使用$loop

    在blade的foreach中,如果你想获取外层循环的变量

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • @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来发送邮件,你可以只展示而不发送邮件

  • ?
  • 1
  • 2
  • 3
  • 4
  • Route::get('/mailable', function () {
  •  $invoice = App\Invoice::find(1);
  •  return new App\Mail\InvoicePaid($invoice);
  • });
  • 7. 通过关联查询记录

    在hasMany关联关系中,你可以查询出关联记录必须大于5的记录

  • ?
  • 1
  • $posts = Post::has('comment', '>', 5)->get();
  • 8. 软删除

    查看包含软删除的记录

  • ?
  • 1
  • $posts = Post::withTrashed()->get();
  • 查看仅被软删除的记录

  • ?
  • 1
  • $posts = Post::onlyTrashed()->get();
  • 恢复软删除的模型

  • ?
  • 1
  • Post::withTrashed()->restore();
  • 9. Eloquent时间方法

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • $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();
  • 总结

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

    原文链接:https://segmentfault.com/a/1190000018864880

    标签:
    上一篇下一篇

    猜您喜欢

    热门推荐