Reputation: 12867
I have a Eloquent Builder and two database connections(mysql_server1
, mysql_server2
) as below:
$builder = User::query();
$builder->where('age', '>', 20);
$builder->with('orders');
// Change connection name here
$builder->whereNotNull('email');
Now how can I change the connection of $builder
?
Any helps would be appreciated
Upvotes: 3
Views: 2021
Reputation: 12867
Need to get the Query from Eloquent Builder and set a new connection to that and set the new query to the Eloquent Builder as below:
$builder = User::query();
$conn = DB::connection('mysql_server2');
$builder->where('age', '>', 20);
$builder->with('orders');
// Magic Happens Here
// Change Connection Here
$query = $builder->getQuery();
$query->connection = $conn;
$query->grammar = $conn->query()->getGrammar();
$query->processor = $conn->query()->getProcessor();
$builder = $builder->setQuery($query);
Upvotes: 2
Reputation: 197
Using setConnection
$builder = (new User)->setConnection('mysql_server2')
Upvotes: 0
Reputation: 572
You can try something like that
$builder = (new User())->on('mysql_server1')->query();
Upvotes: 0