You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Laravel предлагает возможность наполнения вашей базы тестовыми данными с использованием классов-наполнителей. Все классы наполнителей хранятся в каталоге `database/seeders`. Класс `DatabaseSeeder` уже определен по умолчанию. В этом классе вы можете использовать метод `call` для запуска других наполнителей, что позволит вам контролировать порядок наполнения БД.
12
11
13
-
> [!NOTE]
12
+
> [!NOTE]
14
13
> При наполнении базы данных автоматически отключается защита [массового присвоения](/docs/{{version}}/eloquent#mass-assignment).
15
14
16
15
<aname="writing-seeders"></a>
@@ -22,7 +21,6 @@ Laravel предлагает возможность наполнения ваш
22
21
php artisan make:seeder UserSeeder
23
22
```
24
23
25
-
26
24
Класс наполнителя (сидера) по умолчанию содержит только один метод: `run`. Этот метод вызывается при выполнении [команды Artisan](/docs/{{version}}/artisan)`db:seed`. Внутри метода `run` вы можете вставлять данные в свою базу данных так, как вам удобно. Вы можете использовать [строитель запросов (query builder)](/docs/{{version}}/queries) для ручной вставки данных или [фабрики моделей Eloquent](/docs/{{version}}/eloquent-factories).
27
25
28
26
В качестве примера давайте изменим класс `DatabaseSeeder`, созданный по умолчанию, и добавим выражение вставки фасада `DB` в методе `run`:
> В методе `run` вы можете объявить любые необходимые типы зависимостей. Они будут автоматически извлечены и внедрены через [контейнер служб](/docs/{{version}}/container) Laravel.
При выполнении сидов (seeds) вы можете захотеть предотвратить моделям отправку событий. Для этого вы можете использовать трейт `WithoutModelEvents`. При его использовании, трейт `WithoutModelEvents` гарантирует, что события модели не будут отправлены, даже если дополнительные сид-классы выполняются с помощью метода `call`:
97
96
98
-
```php
99
-
<?php
100
-
101
-
namespace Database\Seeders;
97
+
<?php
102
98
103
-
use Illuminate\Database\Seeder;
104
-
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
99
+
namespace Database\Seeders;
105
100
106
-
class DatabaseSeeder extends Seeder
107
-
{
108
-
use WithoutModelEvents;
101
+
use Illuminate\Database\Seeder;
102
+
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
109
103
110
-
/**
111
-
* Запуск сидеров базы данных.
112
-
*/
113
-
public function run(): void
104
+
class DatabaseSeeder extends Seeder
114
105
{
115
-
$this->call([
116
-
UserSeeder::class,
117
-
]);
106
+
use WithoutModelEvents;
107
+
108
+
/**
109
+
* Запуск сидеров базы данных.
110
+
*/
111
+
public function run(): void
112
+
{
113
+
$this->call([
114
+
UserSeeder::class,
115
+
]);
116
+
}
118
117
}
119
-
}
120
-
```
121
118
122
119
Этот трейт поможет вам отключить отправку событий модели во время выполнения сидов (seeds).
Вы также можете заполнить свою базу данных, используя команду `migrate:fresh` в сочетании с опцией `--seed`, которая удалит все таблицы и перезапустит все миграции. Эта команда полезна для полной перестройки вашей базы данных. Опцию `--seeder` можно использовать для указания конкретного сида (seeder) для выполнения:
0 commit comments