Как вернуть суммарное значение только из таблицы ownTo с определенным условием - PullRequest
0 голосов
/ 27 сентября 2018

, поэтому у меня есть такая таблица отчетов в моей базе данных

+---------+------------+-------+
| Company |  periods   | value |
+---------+------------+-------+
| a1      | 01-01-2018 |  1000 |
| a1      | 01-02-2018 |   600 |
| a2      | 01-01-2018 |   500 |
| a2      | 01-03-2018 |   500 |
| a3      | 01-01-2018 |   500 |
| a3      | 01-02-2018 |   500 |
| a3      | 01-03-2018 |   500 |
+---------+------------+-------+

, и эта таблица имеет belongsTo связь с таблицей компании, которая также имеет функцию мягкого удаления

+----+------+---------------------+---------------------+
| id | name |     created_at      |     deleted_at      |
+----+------+---------------------+---------------------+
| a1 | zzzz | 2018-09-30 08:45:27 | null                |
| a2 | xxxx | 2018-03-02 15:35:01 | 2018-02-26 15:35:01 |
| a3 | yyyy | 2018-12-15 14:20:33 | null                |
+----+------+---------------------+---------------------+

сейчаспродолжая от вопрос , на который уже есть ответ.По этому вопросу я хочу показать сумму значений за определенные периоды для каждой компании, и это работает нормально.

Теперь я нахожу другое требование, которое мне было нужно, ну, это довольно сложно, поэтому продолжаем с первого вопросаМне также нравится, например, когда я хочу получить сумму за период 01-02-2018, тогда она будет отображаться вот так (у которой снова уже есть ответ на вопрос выше)

+---------+------------+-------+
| Company |  periods   | value |
+---------+------------+-------+
| a1      | 01-02-2018 |  1600 |
| a2      | 01-02-2018 |   500 |
| a3      | 01-02-2018 |  1000 |
+---------+------------+-------+ 

вопрос здесь, еслия хочу подвести итоги периода 01-03-2018, тогда будет отображаться только компания a1 и a3, так как a2 закрыта / удалена 26-02-2018, поэтому она будет из суммы

+---------+------------+-------+
| Company |  periods   | value |
+---------+------------+-------+
| a1      | 01-03-2018 |  1600 |
| a3      | 01-03-2018 |  1500 |
+---------+------------+-------+ 

как это сделать?я пытался добавить в модель отчета

public function Company()
{
    return $this->belongsTo('App\Company','company','id')->where('deleted_at',null);
}

, а затем просто

$sum = Report::with('Company')->addSelect(DB::row('Company, max(periods) AS periods, sum(value) AS value'))
    ->groupBy('Company')
    ->where('periods', '<=', $maxDate)
    ->get();

, но это не работает ....

...