Laravel Eloquent HasMany через возвращение пустой коллекции - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь получить отсутствие пользователя с помощью метода hasManyThrough. Я ожидаю получить 3 результата, но не получаю.

Вот определение в модели ресурсов.

public function absences()
{
    return $this->hasManyThrough('Absence', 'ICOExternalReference', 'RecordID', 'ResourceID', 'ID', 'ExternalKey');
}

Вызов $resource->absences возвращает пустую коллекцию. Вызов $resource->toSql() и $resource->getBindings() дает мне следующее:

select * from [Absences] inner join [ICOExternalReferences] on [ICOExternalReferences].[ExternalKey] = [Absences].[ResourceID] where [ICOExternalReferences].[RecordID] = ?
array:1 [▼
  0 => 473
]

Что является правильным SQL, и когда я вставляю его в мой редактор sql, я получаю 3 результата.

Я должен добавить, что модели не находятся на одном подключении к БД, но атрибут $ connection правильно определен в каждой модели.

Почему он работает в моем редакторе sql, но возвращает пустое значение в laravel?

EDIT Я выяснил, что проблема в том, что таблица ICOExternalReferences существует на обоих соединениях, а hasManyTrought пытается использовать ее в неправильном соединении, даже если Я явно определил атрибут protected $connection в модели. Есть идеи как это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...