1. Connexion en lecture/écriture
Parfois, vous souhaiterez peut-être utiliser une connexion à la base de données pour les instructions SELECT et une autre pour les instructions d'insertion, de mise à jour et de suppression. Laravel facilite cela et utilisera toujours la connexion correcte, que ce soit en utilisant des requêtes brutes, le générateur de requêtes ou l'ORM Eloquent.
Comment la connexion lecture/écriture doit être configurée, regardons cet exemple :
'mysql' => array('read' => array('host' => '192.168.1.1'),'write' => array('host' => '196.168.1.2'),'driver' => 'mysql','database' =>'database','username' => 'root','password' => '','charset' => 'utf8','collation' => 'utf8_unicode_ci','prefix' => '')
Notez que deux clés sont ajoutées au tableau de configuration : lecture et écriture. Les deux clés ont des valeurs de tableau contenant une clé : host. Le reste des options de lecture et d'écriture de la base de données de la connexion MySQL principale sera le tableau fusionné. Il nous suffit donc de placer des éléments dans les tableaux de lecture et d'écriture si nous souhaitons écraser les valeurs du tableau principal. Ainsi, dans ce cas, 192.168.1.1 sera utilisé comme connexion « lecture », tandis que 192.168.1.2 sera utilisé comme connexion « écriture ». Les informations d'identification de la base de données, le préfixe, le jeu de caractères et toutes les autres options du tableau mysql principal seront partagés entre les deux connexions.
2. Exécutez la requête
Une fois que vous avez configuré la connexion à la base de données, vous pouvez utiliser la classe de requête d'exécution de la base de données.
Exécuter une requête Select
$results = DB::select('select * from users where id = ?', array(1));
La méthode de sélection de résultat renvoie toujours un tableau.
Exécuter une instruction Insert
DB::insert('insert into users (id, name) values (?, ?)', array(1, 'Dayle'));
Exécuter une instruction Update
DB::update('update users set votes = 100 where name = ?', array('John'));
Exécuter une instruction Delete
DB::delete('delete from users');
Remarque : le nombre de lignes renvoyées par les instructions update et delete affecte l'opération.
Exécuter une instruction générique
DB::statement('drop table users');
Interroger les écouteurs d'événements
Vous pouvez interroger les écouteurs d'événements à l'aide de la méthode DB::listening :
DB::listen(function($sql, $bindings, $time){ //});
Troisièmement, transaction de base de données
Pour exécuter un ensemble d'opérations dans une transaction de base de données, vous pouvez utiliser la méthode de transaction :
DB::transaction(function(){ DB::table('users')->update(array('votes' => 1)); DB::table('posts')->delete();});
Remarque : toute exception levée lors de l'arrêt de la transaction entraînera la transaction automatique. à retourner Roll
Parfois, vous devrez peut-être démarrer une transaction :
DB::beginTransaction();
Vous pouvez annuler la transaction via la méthode rollback :
DB::rollback();
Enfin, vous peut le faire via la méthode commit :Commit a transaction
DB::commit();
4. Accéder aux connexions
Lorsque vous utilisez plusieurs connexions, vous pouvez y accéder via la méthode DB::Connection :
$users = DB::connection('foo')->select(...);
Vous Il est également possible d'accéder à l'instance PDO sous-jacente d'origine :
$pdo = DB::connection()->getPdo();
Parfois, vous devrez peut-être vous reconnecter à une base de données donnée :
DB::reconnect('foo');
Si vous devez vous déconnecter d'une base de données donnée. La base de données dépassera la limite max_connections de l'instance PDO sous-jacente, utilisez la méthode de déconnexion :
DB::disconnect('foo');
5. Journaux de requête
Par défaut, les journaux Laravel sont enregistré en mémoire pour toutes les requêtes en cours d'exécution. Cependant, dans certains cas, par exemple lors de l'insertion d'un grand nombre de lignes, l'application peut utiliser un excès de mémoire. Pour désactiver le journal, vous pouvez utiliser la méthode DisableQueryLog :
DB::connection()->disableQueryLog();
o Pour obtenir un ensemble de requêtes exécutées, vous pouvez utiliser la méthode getQueryLog :
$queries = DB::getQueryLog();
Plus de framework de développement PHP Méthodes de fonctionnement de la base de données Laravel Pour résumer les articles connexes, veuillez faire attention au site Web PHP chinois !