Выборка с условием на основе отношения с моделью из другой базы данных

26 Февраля 2024 21:11

В случаях, когда в разных моделях используются разные подключения к базам данных, но при этом они связаны отношениями, бывает нужно использовать различные условия по отношениям типа 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