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();
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。