Нам нужны те жалобы, у которых время жизни (create_at - now ()) больше, чем время жалобы (сумма времени жизни, хранящаяся в таблице complain_type) по красноречивым отношениям.
01.comЖурнальный столик:
+---+------------+-----------------+
|id | complain_preset_id | created_at |
+---+------------+-----------------+
| 1 | 48 | 3/16/2018 10:30 |
| 2 | 13 | 3/16/2018 10:43 |
| 3 | 12 | 3/16/2018 10:57 |
+---+------------+-----------------+
02. Пожаловаться на таблицу предустановок:
+---+------------+-----------------+
|id | type_id | created_at |
+---+------------+-----------------+
| 1 | 1 | 3/16/2018 6:29 |
| 2 | 2 | 3/16/2018 6:29 |
| 3 | 3 | 3/16/2018 6:29 |
+---+------------+-----------------+
03. Таблица типов жалоб
+---+------------+
|id | lifetime |
+---+------------+
| 1 | 10 |
| 2 | 36 |
| 3 | 360 |
| 4 | 500 |
+---+------------+
Соотношение между жалобами и предустановками:
public function preset()
{
return $this->belongsTo(ComplainPreset::class, 'complain_preset_id');
}
отношение между предустановкой-> жалобой:
public function complains()
{
return $this->hasMany(Complain::class, 'complain_id');
}
И предустановка-> complain_type:
public function complainType()
{
return $this->belongsTo(ComplainType::class, 'type_id');
}
complain_type-> предустановка:
public function presets()
{
return $this->hasMany(ComplainPreset::class);
}
Нет прямой связи между жалобой и типом жалоб.
Вот наш красноречивый запрос. но этот запрос не работает.
Отношение жалуется-> предустановлено-> жалобно_тип
Complain::with(['preset' => function ($q) {
$q->with(['complainType' => function($q2) {
$q2->whereRaw('SUBTIME(NOW(), lifetime) > complains.created_at');
}]);
}])->whereDate('created_at', '=' , Carbon::today());
В строке 3 этот запрос не получил complains.created_at, потому что эта строка ссылается на таблицу complain_type.
В строке 3 нам нужно получить доступ к complains.created_at.
Есть какой-нибудь красноречивый способ?