dqoqnmb163241 2017-02-24 14:38
浏览 196

searchModel中的Yii2列别名

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?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 微信小程序协议怎么写
    • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
    • ¥20 怎么用dlib库的算法识别小麦病虫害
    • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
    • ¥15 java写代码遇到问题,求帮助
    • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
    • ¥15 有了解d3和topogram.js库的吗?有偿请教
    • ¥100 任意维数的K均值聚类
    • ¥15 stamps做sbas-insar,时序沉降图怎么画
    • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看