Cake Migrations

Par sylvain, il y a 9 ans


Bonjour
Je rencontre un soucis, je ne trouve pas dans la doc toutes les commandes utilisable avec cake migrations qui est livré avec cakephp 3.

Je cherche entre autre la fonction qui permet de reinitisaliser la base de donnée avec toutes les modifications deja faites.
car je viens de supprimer physiquement les tables.

Auriez vous une idées ?

# bin/cake migrations status Welcome to CakePHP v3.3.2 Console --------------------------------------------------------------- App : src Path: /var/www/htdocs/src/ PHP : 5.6.24-0+deb8u1 --------------------------------------------------------------- using migration path /var/www/htdocs/config/Migrations using seed path /var/www/htdocs/config/Seeds using environment default Status Migration ID Migration Name ----------------------------------------- up 20160829153358 CreatePartners up 20160829162631 CreateItems up 20160829171648 CreateItemsPartners up 20160829202912 CreateCountriesTable up 20160829205354 Initial

18 réponses

sylvain, il y a 9 ans

oui dire qu´un champs n´est plus de type int mais de type text

sylvain, il y a 9 ans

je vois pas le apport avec cake migrations, je pensais justement qu'on ai pas a devoir aller dans le code pour faire ses modifs.

Dans ma tete , Migration me permet de gerer en ligne de commande les changements .
Hors si maintenant je dois aller me taper des lignes a la main, je trouve du coup moins interessant.

sylvain, il y a 9 ans

mais c'est que j'ai dit, je ne veux pas ma palucher manuellement les change.

cette fonction, pour moi n'as aucun interet si je dois moi meme l'ecrire, autant que je me un script sql de mise a jour du champs.
c'est plus simple. que toutes les mic macs qui se sont crée avec Migration

makamo, il y a 9 ans

Salut
Tu n'as p-e pas bien lu la doc car au début il te donne l'endroit ou tu doit chercher ta réponse :P
la doc
et
La réponse est ici :P

sylvain, il y a 9 ans

ca ne repond pas a la question. Les docs je vois pas comment appliquer en ligne de commande cake migration...

makamo, il y a 9 ans

C'est ça que tu cherche ?

./bin/cake migrations migrate
makamo, il y a 9 ans

sinon c'est dans cette section la
ou tu trouve

./bin/cake bake migration CreateProducts name:string description:text created modified

les diférent type de migration

(/^(Create)(.)/) Crée la table spécifiée.
(/^(Drop)(.
)/) Supprime la table spécifiée. Ignore les arguments de champ spécifié.
(/^(Add).(?:To)(.)/) Ajoute les champs à la table spécifiée.
(/^(Remove).(?:From)(.)/) Supprime les champs de la table spécifiée.
(/^(Alter)(.*)/) Modifie la table spécifiée. Un alias pour CreateTable et AddField.

sylvain, il y a 9 ans

Oui merci. Mais j´ai a nouveau le probleme pour seeder . il semble etre inclus mais je ne trouve pas comment alimenter les tables avec des fausses donnees . J´ai vu dans phinx qu´il fallait faker.
Bref tout ne tombe pas cuit dans le bec ...

makamo, il y a 9 ans

en fait la migration de cake ne permet pas de remplir avec des donnée elle créer uniquement la structure tu peux éditer le fichier de migration et rajouter une logique pour remplire la table mais je ne pense pas qu'il y ai une commande pour remplir automatique

makamo, il y a 9 ans

A je vien de voir la fonctionnalité dont tu parle seed
il disent bine de suivre a la lettre la doc de phinx
en plus cake a une fonction pour les créer tes seed
Exemple créer un seed pour la table Articles

bin/cake bake seed Articles

et pour l'executé c'est

./bin/cake migrations seed

Pour tout les seed

./bin/cake migrations seed --seed ArticlesSeed

pour un seed en particulier.

Vraiment cool comme fonction je ne la connaissai pas

Merci :D

sylvain, il y a 9 ans

bonjour @makamo
c'est ce que j'ai fait mais j'ai une erreur.
J'ai pas trop compris pourquoi pas ne marche pas simplement pas défaut ?
en tout cas c'est un peu genant du coup

== ItemsSeed: seeding [PDOException] SQLSTATE[HY000]: General error: 1364 Field 'name' doesn't have a default valu e seed [--seed SEED] [-p|--plugin PLUGIN] [-c|--connection CONNECTION] [-s|--source SOURCE]
sylvain, il y a 9 ans

en fait ca marche plus on moins, je viens juste de comprendre que cake migrations seed ne gere pas l'insertion de fausse données (fake)

si je regarde l'exemple de phinx ci dessous, je me demande comment verifier que Faker est installé dans cakephp ?
j'ai regardé dans Vendor, mais j'ai rien trouvé qui s'y rapporte, ni meme Migration.

Aussi peut etre dois je installer en plus faker ( https://github.com/gourmet/faker ) , mais lequel choisir , si on tape faker cakephp , il est difficile de savoir si c'est pour cakephp 2 ou 3.

use Phinx\Seed\AbstractSeed; class UserSeeder extends AbstractSeed { public function run() { $faker = Faker\Factory::create(); $data = []; for ($i = 0; $i < 100; $i++) { $data[] = [ 'username' => $faker->userName, 'password' => sha1($faker->password), 'password_salt' => sha1('foo'), 'email' => $faker->email, 'first_name' => $faker->firstName, 'last_name' => $faker->lastName, 'created' => date('Y-m-d H:i:s'), ]; } $this->insert('users', $data); } }
sylvain, il y a 9 ans

Oui d´accord mais comment etre sur que c´est cette librairie qu´il faut parmis des dizaines qui existe ?

Lartak, il y a 9 ans

Bonjour.
Faker n'étant pas une librairie indispensable pour faire fonctionner le Framework, elle ne fait pas partie des dépendances importées automatiquement lors de son installation.
Pour l'utiliser, il te suffit de l'importer via composer : Faker is a PHP library that generates fake data for you. et suivre la documentation de la librairie pour son utilisation.

sylvain, il y a 9 ans

Merci, en fait j'avais pas compris le lien entre tous les "composants". Donc CakePHP install Migration, mais pour utiliser Seed , il faut que je fasse un composer install faker.

Mais la ou je suis encore perdu, c'est que je ne sais pas comment il fait pour l'autoload ?
Est ce que composer l'a mis en place directement ? Est ce que je dois ajouter quelques chose en plus par rapport a cakephp ?

J'aurais quand meme apprécier qu'en faisant la generation des fichiers via seed, ils puissent remplir avec des fausses data.

est ce qu'il existe une sorte de composer search list ? comme pour apt-cache search sur Debian ?

Lartak, il y a 9 ans

Faker n'est pas indispensable pour utiliser le Seed de Migrations, mais pour générer des données aléatoires.
Tu fais tout simplement la commande composer require fzaninotto/faker et ensuite pour l'utiliser il te suffira par exemple avant le nom de la classe d'ajouter : use Faker\Factory; puis $faker = Factory::create();.

est ce qu'il existe une sorte de composer search list ? comme pour apt-cache search sur Debian ?

Pour ce qui concerne les commandes disponibles avec Composer, il te suffit de regarder ici : Command-line interface / Commands - Composer et pour précisément ce que tu demandes : Command-line interface / Commands » search - Composer.

sylvain, il y a 9 ans

Un gros merci, j'arrive un peu mieux a me reperer dans tout ca.
Petite question, en faisant la recherche j'ai vu donc fzaninotto/faker et gourmeet/faker avec comme description, for cakephp3.

J'aurais eut l'idée de prendre plutot le gourmet, est ce que tous les packets disponibles vont fonctionner a partir du moment ou ont l'install ?