Video.php 3.57 KB
<?php

namespace app\models;

use Yii;

/**
 * This is the model class for table "{{%video}}".
 *
 * @property string $id
 * @property string $title
 * @property string $pic
 * @property string $url
 * @property integer $app
 * @property integer $task_id
 * @property string $live_title
 * @property string $live_start_time
 * @property string $live_end_time
 * @property string $master_id
 * @property string $room_id
 * @property integer $status
 * @property integer $create_time
 * @property string $update_time
 */
class Video extends \yii\db\ActiveRecord
{
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return '{{%video}}';
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['task_id', 'live_start_time', 'live_end_time', 'master_id', 'room_id', 'status', 'like_num', 'audience_num', 'replay_num', 'create_time', 'update_time'], 'integer'],
            [['title', 'live_title'], 'string', 'max' => 100],
            [['pic', 'url'], 'string', 'max' => 255],
            [['app'], 'string', 'max' => 50],
        ];
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'title' => 'Title',
            'pic' => 'Pic',
            'url' => 'Url',
            'app' => 'App',
            'task_id' => 'Task ID',
            'live_title' => 'Live Title',
            'live_start_time' => 'Live Start Time',
            'live_end_time' => 'Live End Time',
            'master_id' => 'Master ID',
            'room_id' => 'Room ID',
            'status' => 'Status',
            'like_num' => 'Like Num',
            'audience_num' => 'Audience Num',
            'replay_num' => 'Replay Num',
            'create_time' => 'Create Time',
            'update_time' => 'Update Time',
        ];
    }

    public function behaviors() {
        return [
            [
                'class' => \yii\behaviors\TimestampBehavior::className(),
                'createdAtAttribute' => 'create_time',
                'updatedAtAttribute' => 'update_time',
            ]
        ];
    }

    public function afterSave($insert, $changedAttributes)
    {
        if (!empty($changedAttributes)){
            $this->room->touch('update_time');
        }
        
        parent::afterSave($insert, $changedAttributes);
    }
    
    /**
     * 关联表-主播
     * @return type
     */
    public function getMaster()
    {
    	return $this->hasOne(Master::className(), ['master_id'=>'master_id']);
    }
    
    /**
     * 关联表-房间
     * @return type
     */
    public function getRoom()
    {
        return $this->hasOne(Room::className(), ['room_id'=>'room_id']);
    }
    
    /**
     * 根据条件
     * @param array $condition
     */
    public static function condition(array $condition){
    	$model = parent::find()->alias('v');
    	foreach ($condition as $field=> $value) {
    		if ($field == 'title') {
    			if (!empty($value)){
    				$model->joinWith('master m')->andWhere(['or',['like','v.title',$value],['like','v.live_title', $value], ['like','m.name',$value]]);
    			}
    		}
    		else if($field == 'backState') {
    			switch ($value) {
    				case 1://已上传回看视频
    					$sql = "v.url <>''";
    					break;
    				case 0://未上传回看视频
    					$sql = "v.url ='' OR v.url IS NULL";
    					break;
    				case -1:
    				default:
    					$sql = "1";
    					break;
    			}
    			$model->andWhere($sql);
    		}
    	}
    	$model->orderBy(['v.create_time' => SORT_DESC]);
    	return $model;
    }
}