分享
三行代码  ›  专栏  ›  技术社区  ›  Yamel Mauge

Yii2在`$this->modelClass::find()->andWhere(['post_id'=>\Yii::$app->request->get('postId')])上获取语法错误,这是一个有效的子句

  •  0
  • Yamel Mauge  · 技术社区  · 2 天前

    我收到此错误:“语法错误,意外的“::”(T_PAAMAYIM_NEKUDOTAYIM),应为“]” 在有效从句上。

    <?php namespace app\controllers;
    
    use app\models\Comment;
    use yii\data\ActiveDataProvider;
    use yii\rest\ActiveController;
    
    class CommentController extends ActiveController{
    
        public $modelClass = Comment::class;
    
        public function actions()
        {
            $actions = parent::actions(); //Auto generated STUD
            $actions['index']['prepareDataProvider'] = [$this,'prepareDataProvider']; // Replace for custom
    
            return $actions;
        
        }    
    
        public function prepareDataProvider()
        {
            return new ActiveDataProvider([
                "query" => $this->modelClass::find()->andWhere(['post_id' => \Yii::$app->request->get('postId')])
            ]);
        }
    
    }
    

    如果我将“$this->modelClass”替换为“Comment”或任何模型名称,则效果良好。 知道为什么会这样吗?

    为此,我们使用php5.6.36只是因为主应用程序是用它实现的。

    1 回复  |  直到 2 天前
        1
  •  1
  •   Barmar    2 天前

    设置一个变量并使用它。

        public function prepareDataProvider()
        {
            $class = $this->modelClass;
            return new ActiveDataProvider([
                "query" => $class::find()->andWhere(['post_id' => \Yii::$app->request->get('postId')])
            ]);
        }