@2vtlk

В laravel жадная загрузка не совместима с кастомными коллекциями?

Если в модели сделать жадную загрузку
public function companies()
{  
    $this->load('contacts.companies')
    // ...
}

и при этом в модели Contact определен метод создания кастомной коллекции
public function newCollection(array $models = array())
{
        return new ContactCollection($models);
}

Получаем Exception, говорящий нам о том, что ожидается Collection, а приходит ContactCollection
Type error: Argument 2 passed to Illuminate\Database\Eloquent\Relations\BelongsToMany::match() must be an instance of Illuminate\Database\Eloquent\Collection, instance of App\Collections\ContactCollection given, called in /var/www/laravel/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php on line 678

Неужели жадная загрузка не совместима с кастомными коллекциями?
(laravel 5.2)
  • Вопрос задан
  • 664 просмотра
Решения вопроса 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
Вам нужно унаследовать ContactCollection от Illuminate\Database\Eloquent\Collection. Скорее всего, вы от Illuminate\Support\Collection наследуетесь или не наследуетесь вовсе.
Ответ написан
Комментировать
JhaoDa
@JhaoDa
LaravelRUS Team
Наследуйте свою коллекцию от \Illuminate\Database\Eloquent\Collection.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@2vtlk Автор вопроса
Да, действительно я унаследовал её от \Illuminate\Support\Collection и в этом была ошибка. Всем спасибо
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы