Example #1
0
 /**
  * 通过ID获取指定问题
  */
 protected function findAnswer($id, \Closure $callback = null)
 {
     $query = Answer::find();
     $callback !== null && $callback($query);
     if (($model = $query->andWhere(['id' => $id])->one()) !== null) {
         return $model;
     } else {
         throw new NotFoundHttpException('The requested page does not exist.');
     }
 }
Example #2
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params, ActiveQuery $query = null)
 {
     $query === null && ($query = Answer::find());
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     $this->load($params);
     if (!$this->validate()) {
         // uncomment the following line if you do not want to any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     $query->andFilterWhere(['id' => $this->id, 'pid' => $this->pid, 'author_id' => $this->author_id, 'view_count' => $this->view_count, 'comment_count' => $this->comment_count, 'favorite_count' => $this->favorite_count, 'like_count' => $this->like_count, 'hate_count' => $this->hate_count, 'status' => $this->status, 'created_at' => $this->created_at, 'updated_at' => $this->updated_at]);
     $query->andFilterWhere(['like', 'subject', $this->subject])->andFilterWhere(['like', 'content', $this->content])->andFilterWhere(['like', 'type', $this->type]);
     return $dataProvider;
 }
Example #3
0
 /**
  * 添加回答
  * @param Answer $model
  * @return mixed
  */
 public function addAnswer(Answer $model)
 {
     $model->setAttributes(['pid' => $this->id]);
     if ($result = $model->save()) {
         $model->setActive();
         //TODO 后期可以改为开关审核问题
     }
     return $result;
 }
Example #4
0
 /**
  * 创建新回答
  * @param $question
  * @return Answer
  */
 protected function newAnswer(Question $question)
 {
     $model = new Answer();
     if ($model->load(Yii::$app->request->post())) {
         $model->author_id = Yii::$app->user->id;
         if ($question->addAnswer($model)) {
             return $this->message('回答发表成功!', 'success', $this->refresh(), 'flash');
         }
     }
     return $model;
 }
Example #5
0
 /**
  * 获取用户喜欢的指定回答
  * @return static
  */
 public function getLikeAnswer($id)
 {
     return $this->hasOne(Answer::className(), ['id' => 'target_id'])->via('likes', function ($query) use($id) {
         $query->andWhere(['target_type' => Answer::TYPE, 'target_id' => $id]);
         $query->multiple = false;
     });
 }