如何获得laravel DB连接到PHP连接?

Mar*_*nád 5 php mysql sql laravel laravel-5

我需要接收与变量的laravel DB连接,以对数据库提出具体的纯SQL php要求。所需代码:

<?php 
// this is not working
$conn = DB::connection();

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
Run Code Online (Sandbox Code Playgroud)

预期结果:“成功连接”

我之所以需要它,是因为我有非常复杂的SQL要求,我需要进行一个查询,而不要使用laravel查询语法(我相信这是更好的方法,但是我有复杂的查询,需要使用纯查询文本来执行,而不是使用laravel” ->“语法)

我需要获得laravel DB连接,以便不总是像使用PDO或写下DB凭证那样经常建立第二个php连接。如果存在从laravel到DBS的PDO连接,那么对我来说获取php也可能很有用。

DB::connection()->name
Run Code Online (Sandbox Code Playgroud)

返回数据库的名称,但是没有连接:/

我一直在寻找它,但是找不到解决方案,有人可以帮我找到正确的答案吗?(也许这并不重要,但我使用的是mysql)

MoP*_*oPo 5

您可以在 Laravel 中使用原始查询来根据需要执行查询。如果您无论如何都需要连接实例,您可以创建一个类并实现 ConnectionResolverInterface:

use Illuminate\Database\ConnectionResolverInterface as Resolver
class connection implements Resolver {

}
Run Code Online (Sandbox Code Playgroud)

然后你就可以获得连接:

$connector = new connection();
$connection = $connector->connection();
Run Code Online (Sandbox Code Playgroud)

如果您使用模型连接,则可以通过以下方式获得连接:

$user = new User();
$user->getConnection();
Run Code Online (Sandbox Code Playgroud)

您还可以使用 ConnectionFactory 建立新连接:

$connection = new Illuminate\Database\Connector\ConnectionFactory();
Run Code Online (Sandbox Code Playgroud)

有关更多信息,您可以查看laravel API 文档