'ID', 'cancel_flag' => 'Cancel Flag', 'channel_room_id' => '渠道房型ID', 'hotel_id' => '酒店ID', 'channel_id' => '渠道', 'room_id' => '房型ID', ]; } public function getOperaHotel() { return $this->hasOne(OperaHotel::className(), ['HOTEL_ID' => 'hotel_id']); } public function getOperaHotelRoom() { return $this -> hasOne(OperaHotelRoom::className(), ['ID' => 'room_id']); } public function getComparedRoom($filter) { $query = PriceComparedRoom::find() -> joinWith('operaHotelRoom') -> joinWith('operaHotelRoom.operaHotelBaseRoom') -> leftJoin('opera_sort as os1', '`opera_hotel_room`.PARENT_ROOM_TYPE = os1.base_room_id AND os1.room_id = 0') -> leftJoin('opera_sort as os2', '`opera_hotel_room`.ROOM_TYPE = os2.room_id AND os2.room_id != 0 AND `opera_hotel_room`.HOTEL_ID = os2.hotel_id') -> from('price_compared_room') -> where(['price_compared_room.hotel_id' => $filter['hotel_id']]) -> orderBy(['os1.seq' => SORT_ASC, 'os2.seq' => SORT_ASC, 'price_compared_room.channel_room_id' => SORT_ASC]); if($filter['channel_id'] != null) { $query->andFilterWhere(['=', 'price_compared_room.channel_room_id', $filter['channel_id']]); } if($filter['cancel_flag'] != null && $filter['cancel_flag'] != -1) { $query->andFilterWhere(['=', 'price_compared_room.cancel_flag', $filter['cancel_flag']]); } if($filter['channel'] != null && $filter['channel'] != -1) { $query->andFilterWhere(['=', 'price_compared_room.channel_id', $filter['channel']]); } // $res = $query -> createCommand() -> getSql(); $dataProvider = new ActiveDataProvider([ 'query' => $query, 'pagination' => [ 'pageSize' => 20, ], ]); return $dataProvider; } public function beforeSave($insert) { if($this -> isNewRecord) { $this -> cancel_flag = 0; } return parent::beforeSave($insert); } }