簡體   English   中英

查詢檢索到所有記錄時如何訪問每條記錄 Yii2

[英]How to access each record when query retrieved all records Yii2

我正在使用 Yii2 框架構建簡單的 API,我的數據庫包含問題表,該表包含 (question_type) 列和該列的值(1 或 2),我在 Question 模型中創建了一個函數來獲取每個問題的類型..我創建 api 以從表中檢索所有問題,但是當調用該函數時顯示此錯誤Trying to get property 'id' of non-object ,如何解決此問題,

這是我在控制器中的代碼

public function actionGetQuestions(){
    \Yii::$app->response->format = \yii\web\Response:: FORMAT_JSON;
    $attributes = \yii::$app->request->post();
    $questions = Questions::find()->all();
    if($questions){
        return array(
            'status' => true,
            'data' => ['id'=> $questions->id , 'question_content' => $questions->question_content , 'Question Type' => $questions->checkQuestionType($questions->id) ,
            'Question Required Or Not' => $questions->checkQuestionRequired($questions->id) ]
        );
    }else{
        return array('status'=>false,'data'=> 'No Student Found');
    }
}

方法all()返回 ActiveRecord 對象數組。 您必須使用幫助循環語句和其他處理數組的方法來處理結果集。 例如:

foreach ($questions as $question) {
   $id = $question->id;
}

當然,如果你想得到一個對象而不是一組對象,你可以使用one()函數。 例如:

$question = Questions::find()->where(['id' => <id-value>])->one();
$id = $question->id;

您應該構建數據以進行響應並返回它。 例如:

public function actionGetQuestions()
{

    \Yii::$app->response->format = \yii\web\Response:: FORMAT_JSON;

    $attributes = \yii::$app->request->post();
    $questions = Questions::find()->all();

    if(!empty($questions)) {
        $data = [];
        foreach ($questions as $q) {
            $data[] = [
                'id'=> $q->id , 
                'question_content' => $q->question_content , 
                'Question Type' => $q->checkQuestionType($questions->id) , 
                'Question Required Or Not' => $q->checkQuestionRequired($questions->id)
           ];
       }

       return [
          'status' => true,
          'data' => $data
       ];
    } else {
       return ['status' => false,'data' => 'No Student Found'];
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM