J'utilise deux connexions de base de données dans mon projet Laravel.
Je dois modifier les tables dans les deux bases de données.
J'ai tout configuré et maintenant je joue et j'essaie d'obtenir des données depuis la première et la deuxième base de données, mais la documentation ne donne guère d'informations sur la façon de le faire, je n'ai trouvé que ceci:
$users1 = DB::connection('mysql_live')->User::all();
Y a-t-il plus de ressources quelque part? Je n'ai rien trouvé.
Jusqu'à présent, je comprends que je ne peux plus utiliser éloquent si j'utilise plusieurs bases de données? Au moins, je ne peux pas utiliser éloquent pour la deuxième base de données, qui n'est pas par défaut.
Pour les tests, j'ai créé les mêmes tables sur les deux bases de données avec des données différentes. Mais je ne peux pas interroger les données, j'obtiens toujours cette erreur:
$users1 = DB::connection('mysql_live')->select('SELECT * FROM users'); info($users1); $users2 = DB::connection('mysql')->User::all(); info($users2);
Voici mes tests:
Undefined property: Illuminate\Database\MySqlConnection::$User
J'ai aussi essayé:
$users = DB::connection('foo')->select(...);
Le mieux serait la documentation sur la façon d'utiliser correctement DB :: connection
et de sélectionner, modifier, insérer des données, etc. p>
MODIFIER
3 Réponses :
Ceci est possible avec la méthode setConnection
$someModel = new SomeModel; $someModel->setConnection('foo'); $something = $someModel->find(1); return $something;
Essayez ce code,
vous devez d'abord définir la config
$result=DB::connection('mysql_live')->table('users')->get();
puis
Config::set('database.connections.mysql_live.database', 'dbname'); Config::set('database.connections.mysql_live.host','localhost');
$users = User::get();
Merci beaucoup, très utile. J'ai juste compris que je n'ai pas besoin de changer quoi que ce soit pour la base de données par défaut.
Heureux d'avoir aidé :)
Mon problème est de savoir comment connaître cette syntaxe: -> table ('users') -> get () -> toArray ();
. Le docu laravel est vraiment génial, mais la partie sur plusieurs bases de données est pauvre, il n'y a qu'une seule ligne: $ users = DB :: connection ('foo') -> select (...); code >. Mais je peux comprendre cela étape par étape.
Donc, fondamentalement, celui-ci transforme votre sortie de la table users dans un tableau afin que vous puissiez l'utiliser. Vous pouvez le stocker dans une variable et y accéder sous forme de tableau. Vous pouvez en savoir plus ici sur cette collection: laravel.com/docs/5.8/ collections # method-toarray