|
- <?php
-
- namespace backend\modules\hotel\models;
-
- use Yii;
- use yii\data\ActiveDataProvider;
-
- /**
- * This is the model class for table "price_compared_room".
- *
- * @property integer $ID
- * @property integer $cancel_flag
- * @property integer $channel_room_id
- * @property integer $hotel_id
- * @property integer $channel_id
- */
- class PriceComparedRoom extends \yii\db\ActiveRecord
- {
- /**
- * @inheritdoc
- */
- public static function tableName()
- {
- return 'price_compared_room';
- }
-
- /**
- * @inheritdoc
- */
- public function rules()
- {
- return [
- [['cancel_flag', 'channel_room_id', 'room_id', 'channel_id', 'hotel_id'], 'integer'],
- [['room_id', 'hotel_id', 'channel_room_id', 'channel_id'], 'required'],
- ];
- }
-
- /**
- * @inheritdoc
- */
- public function attributeLabels()
- {
- return [
- 'ID' => '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);
- }
- }
|