【问题标题】:Export Relationship data using Laravel Excel使用 Laravel Excel 导出关系数据
【发布时间】:2019-03-24 13:30:42
【问题描述】:

我正在使用 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 不存在。

【问题讨论】:

  • 请详细说明您的问题,正如我所见,您在哪里使用 someModel::all()
  • 您是否要一起返回 Vets 和 Reminders?如果是这样,我推荐这个:Vet::where('is_active', 1)with->('reminders')->get();

标签: laravel eloquent laravel-excel


【解决方案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;
    }
}

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-29
    • 1970-01-01
    • 2019-11-01
    • 1970-01-01
    • 2019-09-21
    • 1970-01-01
    相关资源
    最近更新 更多