Экспорт данных о взаимоотношениях с помощью Laravel Excel

Я использую Laravel Excel для экспорта данных. Я хочу прикрепить к ветеринару все напоминания, доступ к которым осуществляется через отношения hasManyThrough.

Я пробовал следующий код

RemindersExport.php

public function collection()
{
    $vets = Vet::where('is_active', 1)->get();

    foreach($vets as $vet){
        $reminders = $vet->reminders();
    }

    return $reminders;
}

Контроллер

public function reminders()
{
    return Excel::download(new RemindersExport, 'reminders30days.xlsx');
}

Я получаю следующее сообщение ...

Метод Illuminate \ Database \ Query \ Builder :: all не существует.


person Community    schedule 19.10.2018    source источник
comment
Пожалуйста, уточните свой вопрос, как я вижу, где вы использовали someModel::all()?   -  person Rajeev Radhakrishnan    schedule 19.10.2018
comment
вы пытаетесь вернуть ветки и напоминания вместе? Если да, то я рекомендую это: Vet :: where ('is_active', 1) с - ›('напоминания') -› get ();   -  person Brad Goldsmith    schedule 19.10.2018


Ответы (1)


Проблема в том, что вы используете метод сбора, но вы должны использовать метод запроса, а laravel-excel выполняет запрос за вас, поэтому вам не нужно использовать метод get в конце вашего запроса, сначала вы должны использовать Проблема FromQuery, после этого вы должны заменить свой метод сбора методом запроса, написать свой запрос и НЕ добавлять метод get в конце вашего запроса.

use Maatwebsite\Excel\Concerns\FromQuery;

class VetExport implements FromQuery{
    public function query()
    {
        $vets = Vet::where('is_active', 1);

        foreach($vets as $vet){
            $reminders = $vet->reminders();
        }

        return $reminders;
    }
}

надеюсь, это поможет

person Jhonny Barrios Sandrea    schedule 24.06.2019