Jestem nowy w ramach Yii. Chcę zasiać moją bazę danych, tak jak można to zrobić w frameworku Laravel za pomocą Fakera. Próbowałem tego http://www.yiiframework.com/forum/index.php/topic/59655-how-to-seed-yii2-database/, ale nie zapewnia wiele szczegółów. Byłbym bardzo wdzięczny, gdyby ktoś mógł mi pomóc w szczegółach.Jak zasiać bazę danych w Yii2?
Odpowiedz
Zobacz na fixtures i realizacji faker w zaawansowanych testów Yii2-app. W projekcie możesz również napisać w konsoli php yii fixture/load
, aby załadować nasiona w bazie danych i php yii fixture/generate-all
, aby wygenerować ziarno przez fakera.
yii.php
powinien mieć prawo fixture
kontroler w controllerMap
tablicy:
[
'controllerMap' => [
'fixture' => [
'class' => 'yii\console\controllers\FixtureController',
'namespace' => 'common\ActiveRecords'
]
]
]
Dzięki za odpowiedź. Stworzyłem nowy plik YiiBasic \ tests \ unit \ templates \ fixtures \ users.php. Poniżej znajduje się treść: Php zwrot [ 'username' => $ faker-> firstName, 'password' => 123456 ]; //////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////// Po uruchomieniu polecenia "php yii fixture/generate users". I pojawia się następujący błąd w moim wierszu polecenia: Poniżej terminarz szablony nie stwierdzono: * użytkownicy Brak plików Oprawy szablon dopasowania warunków wejściowych zostały znalezione pod pa C: \ xampp \ htdocs \ YiiBasic/testy/codeception/unit/templates/fixtures –
@FaisalQureshi powinieneś skonfigurować pliki szablonów generatora fakerów dla metody 'generate'. (przykład: 'php yii fixture/templates --templatePath = '@ app/path/to/my/custom/templates''). W przypadku nasion, które polecam, nie korzystam z fakera, lepiej jest wypełnić dane określone przez bazę danych poprawionymi kluczami obcymi, znanymi hasłami, itd. –
Tworzenie polecenia konsoli i użycie Faker'a w kontrolerze poleceń konsoli do rozsiewania bazy danych dla mnie.
Poniżej znajduje się plik SeedController.php
który stworzyłem w folderze polecenia:
// commands/SeedController.php
namespace app\commands;
use yii\console\Controller;
use app\models\Users;
use app\models\Profile;
class SeedController extends Controller
{
public function actionIndex()
{
$faker = \Faker\Factory::create();
$user = new Users();
$profile = new Profile();
for ($i = 1; $i <= 20; $i++)
{
$user->setIsNewRecord(true);
$user->user_id = null;
$user->username = $faker->username;
$user->password = '123456';
if ($user->save())
{
$profile->setIsNewRecord(true);
$profile->user_id = null;
$profile->user_id = $user->user_id;
$profile->email = $faker->email;
$profile->first_name = $faker->firstName;
$profile->last_name = $faker->lastName;
$profile->save();
}
}
}
}
i używane polecenia yii seed
uruchomić sterownik.
Jest to właściwie całkiem dobra metoda tworzenia własnych nasion. Mogłem pomyśleć o tym, Dobra robota! – MDijkstra
Proszę sprawdzić ten -> http://stackoverflow.com/questions/17114708/how-to-seed-in-yii –
Można zbudować [migracja] (http://www.yiiframework.com/doc- 2.0/guide-db-migrations.html) skrypty oparte na rozszerzeniu [yii2-faker] (https://github.com/yiisoft/yii2-faker). –
Dzięki za odpowiedź. Właściwie zamierzam zasiać moją bazę danych danymi fikcyjnymi. Tak jak można to zrobić za pomocą Fakera. –