Laravel 5 拉雷维尔—;循环多个表中的所有数据

Laravel 5 拉雷维尔—;循环多个表中的所有数据,laravel-5,relationship,Laravel 5,Relationship,你好。我已经研究过了,但是没有任何东西和我的问题相匹配。下面是一个场景。我有课程表格,还有3张表格,作业,测验,还有报告。现在,我想要的是,从表作业,测验,报告中获取所有记录,并通过特定课程下的所有记录循环 输出示例:顺序应根据第一个创建的项目。 课程1 分配1 Quiz1 Quiz2 分配2 Report1 我如何使用三张不同的表?我知道如何使用基本的多对多关系。我真的累坏了。需要帮助,伙计们 注意:我使用的是Laravel5.1 更新1-Course.php <?php names

你好。我已经研究过了,但是没有任何东西和我的问题相匹配。下面是一个场景。我有
课程
表格,还有
3张
表格,
作业
测验
,还有
报告
。现在,我想要的是,从表
作业
测验
报告
中获取所有记录,并通过特定
课程
下的所有记录循环

输出示例:顺序应根据第一个创建的项目。
课程1

分配1

Quiz1

Quiz2

分配2

Report1

我如何使用三张不同的表?我知道如何使用基本的
多对多
关系。我真的累坏了。需要帮助,伙计们

注意:我使用的是Laravel5.1


更新1
-Course.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Course extends Model
{
    protected $fillable = [];

    public function assignments(){
        return $this->belongsToMany('Assignment');
    }

    public function quizzes(){
        return $this->belongsToMany('Quiz');
    }

    public function reports(){
        return $this->belongsToMany('Report');
    }

}

根据您的问题提供的有限信息,您需要将您的关系合并到一个集合中

如果可行的话,使用工会将是一个更好的解决方案,以提高效率,但嘿嘿

// Prepare not deleted scope
// I would suggest using Laravel's SoftDeletes, as it'll be better than writing your own implementation. But if not, you would be better to create this as a reusable scope on your model
$notDeletedScope = function ($query) {
    return $query->where('deleted', 0);
};

// Find course with non-deleted relations
$course = Course::with([
        'assignments' => $notDeletedScope,
        'reports'     => $notDeletedScope,
        'quizzes'     => $notDeletedScope,
    ])
    ->findOrFail($id);

// Combine relations into single collection
$merged = collect($course->assignments);
$merged = $merged->merge(collect($course->quizzes));
$merged = $merged->merge(collect($course->reports));

// Sort merged relations by created_at
$merged = $merged->sortBy('created_at');

@foreach ($merged as $relation)
    @if ($relation->type === 'assignment')
        // ...
    @elseif ($relation->type === 'quiz')
        // ...
    @elseif ($relation->type === 'report')
        // ...
    @endif
@endforeach
添加到每个模型中:

public function getTypeAttribute()
{
    return snake_case(substr(strrchr(get_class($this), '\\'), 1));
}

更新您的问题,以包括您的模型和关系定义,以及所需的输出。我已经有了一个示例输出,现在我已经包括了
模型
。您是说希望它们按日期顺序排列吗?我没有看到你问题中提到的。我再问一次,如果您能具体说明所需的输出,那么就更容易提出解决方案。@J先生更新您的问题,以显示您的代码在哪里以及您试图实现什么。@J先生-好的,但您试图实现什么?为什么你发布的新代码不起作用?是否每个关系都没有
名称
属性?是否
$table\u name
是数据库表的名称?@J先生-更新了我的答案,并提出了解决问题的建议。
public function getTypeAttribute()
{
    return snake_case(substr(strrchr(get_class($this), '\\'), 1));
}