Laravel 的工厂回调和基于闭包的 guard

翻译 CismonX ⋅ 于 2个月前 ⋅ 369 阅读 ⋅ 原文地址

站点的翻译文章创建时,您将第一时间收到通知。

这是一篇社区协同翻译的文章,已完成翻译,更多信息请点击 协同翻译介绍

file

最近在 Laravel 文档中添加了两个之前没被记录到的功能,它们非常棒!

第一个是 工厂回调函数 ,它可以让你在生成或者创建模型的时候执行其它任务。

file

若相惜 翻译于 2个月前

我提到的这些 Going Deeper with Factory States 中的帮助类在那时还没有被加以记录。多亏了 Dries Vints 现在才有四种方法被文档化:

// 工厂回调
$factory->afterMaking(App\User::class, function ($user, $faker) {
    // ...
});

$factory->afterCreating(App\User::class, function ($user, $faker) {
    $user->accounts()->save(factory(App\Account::class)->make());
});

// 工厂状态回调
$factory->afterMakingState(App\User::class, 'delinquent', function ($user, $faker) {
    // ...
});

$factory->afterCreatingState(App\User::class, 'delinquent', function ($user, $faker) {
    // ...
});

在通过 factory 创建新模型之后,使用这些回调自动保存关联数据非常方便。

hiwynn 翻译于 2个月前

第二个没被记录到的是针对请求身份验证的 闭包看守器

在服务提供者的 boot() 方法中添加 Auth::viaRequest ,可以很轻松的实现自定义 HTTP 认证:

Auth::viaRequest('custom-token', function ($request) {
    return User::where('token', $request->token)->first();
});

你也可以在 App 的 config/auth.php 中自定义看守器配置:

'guards' => [
    'api' => [
        'driver' => 'custom-token',
    ],
],
若相惜 翻译于 2个月前

Laravel 是迄今为止现存的文档最为完善的框架之一了,在此感谢每一位社区开发者的贡献,是你们让文档更加完善。

但是文档并不能涵盖所有的一切,随着越来越多新的特性与改变的发布,有必要为这些特性增加文档说明了 documentation repo

Explorer 翻译于 2个月前

原文地址:https://laravel-news.com/factory-callbac...

译文地址:https://laravel-china.org/topics/13149/l...


本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

回复数量: 0
暂无回复~
您需要登陆以后才能留下评论!

Composer 中国全量镜像

Top 250 扩展包

Lumen 中文文档

Laravel 速查表

Laravel 中文文档

Laravel 项目开发规范

Laravel 开发环境部署

Composer 中文文档

Elasticsearch-PHP 中文文档

Lumen 中文文档

GraphQL PHP 中文文档

社区文档撰写指南

TDD 构建 Laravel 论坛笔记

PHP PSR 标准规范

PHP 设计模式全集

Dingo API 中文文档