AgentSmith72
@AgentSmith72
JS - это моё хобби

Каким образом реализовать связь «Один к одному через» в Laravel, для нескольких (двух) баз данных?

Модель RequestDiscussion находится в базе данных mysql.
Модель User находится в базе данных mysq_u.
Модель Request находится в базе данных mysq.

Вызывается:
Route::get('', function() {
    $s = RequestDiscussion::find(23721);
    dd($s->user);
});

public function user()
{
    return $this->hasOneThrough(
        User::class,
        Request::class,
        'id',
        'id',
        'request_id',
        'user_id');
}

С setConnection('mysql_u') таблица request_discussions попадает в соединение 'mysql_u.
В обоих вариантах с setConnection('mysql_u') и без него requests попадает в соединение 'mysql_u.

Подскажите возможно ли сделать такую связь через "hasOneThrough"?
  • Вопрос задан
  • 346 просмотров
Решения вопроса 1
iMedved2009
@iMedved2009
Не люблю людей
public function user()
{
    $instance = $this->newRelatedInstance(User::class);
    $foreignKey = `request_discussions`.`request_id`;
    $localKey = $this->getKeyName();

     return $this->newHasOne($instance->newQuery(), $this, $foreignKey, $localKey)->join('orders.requests', 'requests.user_id', '=', 'users.id');
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы