В случаях, когда в разных моделях используются разные подключения к базам данных, но при этом они связаны отношениями, бывает нужно использовать различные условия по отношениям типа whereHas
. В таком случае, работать условие не будет т.к. таблица связи будет в рамках основного подключения, а не дополнительного .
Пофиксить это можно следующим образом:
Создаем модель:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model as BaseModel;
class Model extends BaseModel
{
public function __construct(array $attributes = [])
{
$this->table = $this->getConnection()->getDatabaseName() . '.' . $this->getTable();
parent::__construct($attributes);
}
}
И наследуем от нее модель из другого соединения вместо модели от ELoquent.
Источник - https://github.com/laravel/framework/issues/33402