I've got a problem with aliases, trying to get ActiveDataProvider with alias that is min value from 2 tables.
$query->select('karta_przyrzadu.*');
$query->joinWith('dzialania');
$query->addSelect(['dataVar1' => '(NOW() + interval karta_przyrzadu.co_zostalo day)']);
$query->addSelect(['dzialania.data_plan as `dataVar2`']);
$query->addSelect(['least(dataVar1, dataVar2) as nextActionDate']);
Vars in model are declared, and marked as safe in rules():
public $nextActionDate;
public $dateRangeStart;
public $dateRangeEnd;
public $dataVar1;
public $dataVar2;
Filtering
if (!is_null($this->nextActionDate) && strpos($this->nextActionDate, ' - ') !== false ) {
list($dateRangeStart, $dateRangeEnd) = explode(' - ', $this->nextActionDate);
$query->andFilterWhere(['between', 'dataVar2', $dateRangeStart, $dateRangeEnd]);
}
doesn't because of:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'dataVar1' in 'field list'
The SQL being executed was: SELECT COUNT() FROM (SELECT karta_przyrzadu
., (NOW() + interval co_zostalo day) AS dataVar1
, dzialania
.data_plan as dataVar2
, least(dataVar1, dataVar2) as nextActionDate FROM karta_przyrzadu
LEFT JOIN dzialania
ON karta_przyrzadu
.id_przyrz
= dzialania
.id_przyrz_d
WHERE (nextActionDate
BETWEEN '2017-02-18' AND '2017-02-24') AND (NOT (status
='Wycofany')) GROUP BY id_przyrz
) c
Anyone can help me?