Я пытаюсь получить отсутствие пользователя с помощью метода 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
в модели. Есть идеи как это исправить?