Laravel 9个不经常用的小技巧
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();
原文地址:https://segmentfault.com/a/1190000018864880
相关推荐
-
repository实作 php框架
2019-1-30
-
Laravel 9个不经常用的小技巧 php框架
2019-4-19
-
Swoole 2019 :化繁为简、破茧成蝶 php框架
2019-1-21
-
是时候了解下Travis CI是什么了 php框架
2019-1-3
-
MixPHP 独特的SQL构建方式 php框架
2019-3-19
-
Laravel 中使用 Redis 数据库 php框架
2019-1-30
-
Laravel接入Prometheus php框架
2019-3-4
-
laravel5.5 + react完成简单的CRUD php框架
2019-1-30
-
深入理解控制反转(IoC)和依赖注入(DI) php框架
2019-5-25
-
swoole compiler加密drupal产生的一些问题 php框架
2019-5-25