使用Laravel Excel导出关系数据

时间:2018-10-19 16:00:00

标签: laravel eloquent 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不存在。

1 个答案:

答案 0 :(得分:0)

问题是您使用的是集合方法,但您应该使用查询方法,而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;
    }
}

我希望这对您有帮助