从Laravel中的DB正确获取数据

时间:2019-04-25 13:18:37

标签: database laravel eloquent

我有两个表格“组”(包含组)和“时间表”(包含各个组的时间表项目)。

每个计划记录都有一个group_id。一组可能有许多计划项目。

我想提取有关计划表的数据,并按组对它们进行排序并打印。

类似的东西:

Group 1 (group_id=1)
- schedule 1 (id=1)
- schedule 2 (id=2)
- schedule 3 (id=3)
Group 2 (group_id=2)
- schedule 4 (id=4)
- schedule 5 (id=5)

这就像每个组的一系列计划项目。

如何使用Laravel Eloqent做到这一点?

3 个答案:

答案 0 :(得分:0)

在您的组模型中

public function schedules()
{
    return $this->hasMany('App\Schedule');
}

所以您可以做这样的事情

$groups = Group::with('schedules')->get();

答案 1 :(得分:0)

您可以通过关系实现

您可以遵循以下代码:-

在您的组模型中添加以下代码

public function schedule()
{
  return $this->hasMany("App\Schedule","group_id"); // you model path
}

您的日程安排很多,因此我们正在使用hasMany 然后借助with方法

Group::with('schedule')->get()->groupBy(id);

在这里,我们通过分组id获取所有数据,因为我们是从组模型中获取数据的。

答案 2 :(得分:0)

您只需要在下面的模型上创建关联方法

在模型组上:

use Illuminate\Database\Eloquent\Model;

class Group extends Model
{
    /*
    * Get the schedules of the group
    */
    public function schedule()
    {
      return $this->hasMany(Schedule::class,"group_id");
    }

}

按时间表进行:

use Illuminate\Database\Eloquent\Model;

class Schedule extends Model
{
    /*
    * Get the group of the schedule
    */
    public function group()
    {
      return $this->belongTo(Group::class,"group_id");
    }

}

通过这种方式,您可以将日程表添加到该组或具有日程表的组中。

最后,您可以在控制器上执行此操作

Group::with('schedule')->orderBy('groups.id')->get();