Мне нужно подключиться к разным базам данных, но мне нужно сделать это прямо в запросе, не указывая информацию о подключении в файле laravel database.php, если это возможно?
Это мой код:
public function prueba()
{
try {
$data = Mesa::on([
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => '127.0.0.1',
'port' => '3306',
'database' => 'mydatabase_laravel',
'username' => 'root',
'password' => '',
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci'
])->get();
return $data;
} catch (Exception $e) {
error_log($e);
return Responses::errorHttpXWithoutErrors(500, 'Ocurrió un error al asignar las notas');
}
}
Это ошибка, которая дает мне:
str_ends_with(): Аргумент №1 ($haystack) должен быть строкового типа, указан массив
Я попытался сделать это так, как показано в прикрепленном коде, но это все равно не работает.
Не публикуйте код, данные или сообщения об ошибках в виде изображений. См. Как спросить






Метод Model::on принимает имя подключения в виде строки, а не массива параметров БД.
Вы можете просто добавить настройку конфигурации в файл конфигурации на лету, как указано здесь:
Здесь происходит то, что вы просто получаете доступ к массиву файлов конфигурации базы данных, а затем добавляете параметры к массиву и запрашиваете их сразу после этого. Таким образом, вы не открываете сам файл, а изменения только для одного вызова.
Если по какой-то причине вы даже этого не можете сделать, я бы подумал об использовании Vanilla PHP и подключении к БД через стандартный способ PHP PDO (хотя это уродливо, и вы теряете ORM Laravel и т. д.):
$dsn = 'mysql:host=localhost;dbname=mydatabase';
$username = 'myusername';
$password = 'mypassword';
$pdo = new PDO($dsn, $username, $password);
Это работало очень хорошо, это было именно то, что я искал, не было необходимости использовать стандартную форму PHP PDO
Взгляните на: laravel.com/docs/master/…