How to get laravel DB connection to php connection?

12,733

Solution 1

You can use raw query in laravel for executing queries as you wish. If you need connection instance anyway you can create a class and implement ConnectionResolverInterface:

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

}

then you can get connection:

$connector = new connection();
$connection = $connector->connection();

If you're using your model connection you can get connection this way:

$user = new User();
$user->getConnection();

Also you can make a new connection by using ConnectionFactory:

$connection = new Illuminate\Database\Connector\ConnectionFactory();

for more information you can see laravel API doc

Solution 2

Try this:

$pdo = $eloquentConnection->getConnection()->getRawPdo();

Cheers

Share:
12,733
Marek Bernád
Author by

Marek Bernád

Contact: LinkedIn

Updated on June 26, 2022

Comments

  • Marek Bernád
    Marek Bernád almost 2 years

    I need to receive laravel DB connection to variable to make concrete pure SQL php demands on a database. Desired code:

    <?php 
    // this is not working
    $conn = DB::connection();
    
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }
    echo "Connected successfully";
    ?>
    

    Desired result: "Connected successully"

    I need it because I have very complex SQL demands that I need to put in one query, not using laravel query syntax (I believe it is better approach, but I have complex queries and need to use pure query text to execute, not laravel "->" syntax)

    I need to get laravel DB connection to not always often establish second php connection like with PDO or writing down DB credentials. If PDO connection to DBS from laravel exists, it could be useful to obtain to php for me too.

    DB::connection()->name
    

    returns a name of DB, but thats no connection :/

    I was looking for it but nowhere found solution for that, could someone help me find correct answer please? (maybe it is not important, but I use mysql)

  • Marek Bernád
    Marek Bernád about 7 years
    interesting, but this is creation of new connection instance, can I get somehow existing connection?
  • MoPo
    MoPo about 7 years
    try getDefaultConnection on same interface.
  • Marek Bernád
    Marek Bernád about 7 years
    maybe I don't understand, maybe you can update your answer with code.. but as far as I know about getDefaultConnection, it only returns string name of connection but not concrete connection...