Я не могу найти решение, связанное с проблемой, которую, как мне казалось, было легче решить. У меня есть два столбца с цифрами c значения INT (5) и в третьем я должен получить результат разницы для каждой отдельной строки курса.
Я взял подсказку из решения по сложению на это ссылка , но возвращается в (без значения) для каждой строки.
В модели Sistop. php:
public function getDiff()
{
$this->diff = 0;
if (is_numeric($this->qdsistop) && is_numeric($this->qusistop)) {
$this->diff = $this->qdsistop - $this->qusistop;
}
return $this->diff;
}
В SistopSearch. php
class SistopSearch extends Sistop
{
public function attributes()
{
return array_merge(parent::attributes(), ['diff']);
}
......
public function search($params)
{
$query = Sistop::find()->select('*, (`qdsistop` - `qusistop`) AS `diff`');
// add conditions that should always apply here
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
// enable sorting for the related columns
$dataProvider->sort->attributes['diff'] = [
'asc' => ['diff' => SORT_ASC],
'desc' => ['diff' => SORT_DESC],
];
.....
if (is_numeric($this->diff)) {
$query->having([
'diff' => $this->diff,
]);
}
Результат один и тот же: (без значения) для каждой строки.
Заранее спасибо.