阅读(3607)
赞(10)
Laravel 8 多种关系
2021-07-08 16:55:48 更新
接下来,让我们探索使用 Laravel 的流畅工厂方法建立 Eloquent 模型关系。 首先,假设我们的应用程序具有 User
模型和 Post
模型。 同样,假设 User
模型定义了与 Post
的 hasMany
关系。 我们可以使用工厂提供的 has
方法创建一个拥有三个帖子的用户。 has
方法接受工厂实例:
use App\Models\Post;
use App\Models\User;
$users = User::factory()
->has(Post::factory()->count(3))
->create();
按照惯例,在将 Post
模型传递给 has
方法时,Laravel 会假设 User
模型必须有一个定义关系的 posts
方法。如有必要,您可以明确指定要操作的关系的名称:
$users = User::factory()
->has(Post::factory()->count(3), 'posts')
->create();
当然,您可以对相关模型执行状态操作。此外,如果状态更改需要访问父模型,则可以传递基于闭包的状态转换:
$users = User::factory()
->has(
Post::factory()
->count(3)
->state(function (array $attributes, User $user) {
return ['user_type' => $user->type];
})
)
->create();