Laravel Jetstream
Laravel Jetstream 是为 Laravel 设计的精美的应用程序脚手架。Jetstream 为你的下一个项目提供了完美的起点,包括登录、注册、电子邮件验证、双因子认证、会话管理、通过 Laravel Sanctum 提供的 API 支持以及可选的团队管理。Laravel Jetstream 替代并改进了可用于早期版本的 Laravel 的旧式身份验证 UI 支架。 Jetstream 是使用 Tailwind CSS 设计的,你可以选择 Livewire 或 Inertia 脚手架。
模型类目录
由于压倒性的社区需求,现在默认的 Laravel 框架包含一个 app/Models 目录。我们希望你喜欢 Eloquent 的新家!所有相关的生成器命令均已更新,假定模型存在于 app/Models 目录(如果存在)。如果该目录不存在,则框架将假定你的模型应放置在 app 目录。
模型工厂类
模型工厂类由泰勒・奥特威尔(Taylor Otwell)贡献。 Eloquent 模型工厂 已完全重写为基于类的工厂,并有完美的关联支持。 例如 Laravel 中的 UserFactory 是这样写的:
<?php namespace Database\Factories; use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Support\Str; class UserFactory extends Factory { /** * 工厂对应模型的名称。 * * @var string */ protected $model = User::class; /** * 定义模型的默认状态。 * * @return array */ public function definition() { return [ 'name' => $this->faker->name, 'email' => $this->faker->unique()->safeEmail, 'email_verified_at' => now(), 'password' => 'xxxxxxxxx', // password 'remember_token' => Str::random(10), ]; } }
由于在生成模型时可以使用新的 HasFactory trait,因此可以像以下方式使用模型工厂:
use App\Models\User; User::factory()->count(50)->create();
因为模型工厂现在是简单的 PHP 类,状态转换可以直接写成一个方法。除此之外,你也可以给你的 Eloquent 模型工厂添加任意你需要的工具类。
例如,你的 User 模型 有个 suspended 属性,现在你想修改它的一个默认的属性值,你可以使用基类工厂类的 state 方法来完成。方法名字可以随意设置,毕竟这是个很典型的 PHP 方法。
/** * 表示这个用户处于禁止状态 * * @return \Illuminate\Database\Eloquent\Factories\Factory */ public function suspended() { return $this->state([ 'account_status' => 'suspended', ]); }
定义好我们就可以这样使用:
use App\Models\User; User::factory()->count(5)->suspended()->create();
像之前说到的,Laravel 8 的模型工厂包含了对模型关联的完美支持。现在假定我们的 User 模型有一个 posts 关联方法,我们只需要执行下面的代码就可以生成一个有 3 篇文章的用户。
为了简化升级过程,我们发布了一个 laravel/legacy-factories 扩展包,可以在 Laravel 8 中支持以前的模型工厂。