【发布时间】:2022-01-10 13:37:02
【问题描述】:
我有一个 laravel 项目,其中 User 可以有许多 Client 类。 Client 可以有很多 Session 和 Session 可以有很多 Assessment 和很多 Plan。我在Client 上使用hasManyThrough 来获取Assessment 和Plan。每个Assessment 和Plan 都有一个review_date 时间戳保存到数据库中。
我想做的是获得所有Assessment 和Plan 的任何Client 和他们的review_date,就像今天一样。理想情况下是这样的:
$events = Auth::user()->reviews()->today();
我不知道该怎么做才能实现 reviews 函数,因为它本质上是结合了 2 个关系。
谁能帮帮我?
User.php
public function clients()
{
return $this->hasMany(Client::class);
}
public function assessments()
{
return $this->hasManyThrough(Assessment::class, Client::class);
}
public function plans()
{
return $this->hasManyThrough(Plan::class, Client::class);
}
public function reviews()
{
// return all assessments and plans
}
public function scopeToday(Builder $query)
{
$query->whereDate('review_date', Carbon::today());
}
Client.php
public function assessments()
{
return $this->hasManyThrough(Assessment::class, Session::class);
}
public function plans()
{
return $this->hasManyThrough(Plan::class, Session::class);
}
Session.php
public function assessments()
{
return $this->hasMany(Assessment::class);
}
public function plans()
{
return $this->hasMany(Plan::class);
}
【问题讨论】: