我有两个表格“组”(包含组)和“时间表”(包含各个组的时间表项目)。
每个计划记录都有一个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做到这一点?
答案 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();