阅读(1864) (10)

Laravel 8 Pivot (中转) 表属性

2021-07-08 16:55:48 更新

如果需要定义应该在链接模型的中转表 / 中间表上设置的属性,可以使用「hasAttached」方法。此方法接受中转表属性名称和值的数组作为其第二个参数:

    use App\Models\Role;
    use App\Models\User;

    $users = User::factory()
                ->hasAttached(
                    Role::factory()->count(3),
                    ['active' => true]
                )
                ->create(); 

如果您的状态更改需要访问相关模型,则可以提供基于闭包的状态转换:

    $users = User::factory()
                ->hasAttached(
                    Role::factory()
                        ->count(3)
                        ->state(function (array $attributes, User $user) {
                            return ['name' => $user->name.' Role'];
                        }),
                    ['active' => true]
                )
                ->create();