2016-01-25 42 views
5

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?

+0

Proszę sprawdzić ten -> http://stackoverflow.com/questions/17114708/how-to-seed-in-yii –

+0

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). –

+0

Dzięki za odpowiedź. Właściwie zamierzam zasiać moją bazę danych danymi fikcyjnymi. Tak jak można to zrobić za pomocą Fakera. –

Odpowiedz

4

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' 
     ] 
    ] 
] 

See more info in documentation.

+0

Dzięki za odpowiedź. Stworzyłem nowy plik YiiBasic \ tests \ unit \ templates \ fixtures \ users.php. Poniżej znajduje się treść: $ 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 –

+0

@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. –

8

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.

+1

Jest to właściwie całkiem dobra metoda tworzenia własnych nasion. Mogłem pomyśleć o tym, Dobra robota! – MDijkstra