J'aimerais utiliser la classe DB de Laravel pour exécuter une requête MySQL, mais aucune des fonctions fournies par Laravel ne fonctionne.
Aucune de celles-ci ne travaille: DB :: Déclaration () / dB :: Sélectionner ( ) / DB :: brut () / dB :: update (update (update () / db :: Sélectionnez (dB :: RAW ()) P>
Voici le code que je voudrais interroger: P> < PRE> XXX PRE>
J'ai regardé et essayé des méthodes de ces deux sujets aussi, mais rien ne fonctionne: P>
PAS-RUN-RAW-QUERY-IN-LARAVEL-4 P>
LARAVEL-4-HOW--TO-RUN-A-RAW-SQL P>
Erreur renvoyée lors de l'exécution avec "dB :: Select (DB :: RAW ($ requis))" ou dB :: Déclaration: p>
3 Réponses :
Déposez la table des utilisateurs de la base de données, puis essayez ceci et laissez-moi savoir si cela fonctionne ou non:
DB::insert('CREATE TABLE `users` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `u_username` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `u_email` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `password` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `u_regdate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `u_birthday` date NOT NULL DEFAULT '0000-00-00', `u_lastlogin` int(11) NOT NULL, `u_logcout` int(11) NOT NULL DEFAULT '0', `u_level` tinyint(1) NOT NULL DEFAULT '0', `u_language` tinyint(1) NOT NULL DEFAULT '0', `u_status` tinyint(1) NOT NULL DEFAULT '0', `u_gender` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci'); //and so on for all the other queries.
DB :: La requête n'existe pas à Laravel 4, alors j'ai utilisé dB :: Insérer et cela a fonctionné. Je suppose que l'exécution de plusieurs requêtes en même temps n'est pas possible, mais les exécuter un par un travaille
Oui, c'est correct, vous devez exécuter la requête individuellement et merci de parler de la DB :: La requête non existante à Laravel 4.Je changera la réponse en tant que telle avec insert ()
Je viens de découvrir qu'il existe une fonction d'exécution du code RAW MySQL: DB :: non préparé (code $); Github.com/Laravel/framework/Pull/54
Exécution du code SQL comme celui que j'ai fourni dans la question peut être exécuté à l'aide de
DB::unprepared( $code );
@Omerm. Comment incorporez-vous la classe DB dans votre système? Avez-vous créé un modèle ou appelé directement dans le contrôleur?
@ Volatil3 Pour ce projet, j'ai utilisé la classe DB dans une classe de commandes PHP. Je voulais créer un commandement artisanal que je pourrais utiliser pour exporter et importer mon DB. Vous pouvez utiliser la classe DB n'importe où dans tout votre projet. Dans votre contrôleur ou votre modèle.
Qu'en est-il de ce code? Je trouve tout à fait utile d'utiliser Migrations & DB Semise - en particulier pour le déploiement.
Schema::create('users', function($table){ $table->increments('id'); $table->string('u_username'); $table->string('u_email'); $table->string('password'); $table->datetime('u_regdate'); $table->date('u_birthday'); $table->integer('u_lastlogin'); $table->integer('u_logcout')->default(0); $table->tinyinteger('u_level')->default(0); $table->tinyinteger('u_language')->default(0); $table->tinyinteger('u_status')->default(0); $table->tinyinteger('u_gender')->default(0); }); // Repeat this for other users as well User::create([ 'u_username' => 'admin', 'u_email' => 'admin@example.com', 'password' => Hash::make('users-password'), 'u_regdate' => date('Y-m-d H:i:s'), 'u_birthday' => '1980-01-01', 'u_lastlogin' => 0, 'u_logcout' => 0, 'u_level' => 9, 'u_language' => 0, 'u_status' => 0, 'u_gender' => 0, ]);
Pouvez-vous montrer l'erreur qu'elle donne lors de l'exécution de la requête avec la classe DB?
ajouté l'erreur renvoyée à la question principale. Quand j'essaie d'exécuter la requête avec phpmyadmin, cela fonctionne parfaitement