在 yii 框架中调用未定义的方法 stdClass::save()

Call to undefined method stdClass::save() in yii framework

我正在构建聊天弹出窗口,一个用户将在其中发起与另一个用户的对话。 在我的 initietchat 函数中,出现以下错误 Call to undefined method stdClass::save().

查看代码并找到 THIS SAVE FUNCTION ==>> 抛出错误的 save() 函数。

如果两个用户已经发起对话,则不会发生此错误。

public function actionInitiatechat() {
        if (isset($_POST)){
            //$message = Myclass::checkPostvalue($_POST['message']) ? $_POST['message'] : "";
            $senderId = Myclass::checkPostvalue($_POST['sender']) ? $_POST['sender'] : "";
            $receiverId = Myclass::checkPostvalue($_POST['receiver']) ? $_POST['receiver'] : "";
            $messageType = Myclass::checkPostvalue($_POST['messageType']) ? $_POST['messageType'] : "";
            $sourceId = Myclass::checkPostvalue($_POST['sourceId']) ? $_POST['sourceId'] : "";
            $timeUpdate = time();
            $message = $_POST['message'];
            $Products = Products::model()->findByPk($sourceId);
            if(isset($Products) && $Products->approvedStatus == 0)
            {
                echo "error";
            }
            else
            {



    $criteria = new CDbCriteria;
                    $criteria->condition = "(user1 = '$senderId' AND user2 = '$receiverId') OR (user1 = '$receiverId' AND user2 = '$senderId')";

                    $chatModel = Chats::model()->find($criteria);

                    $encodeMsg = urlencode($message);

                    if (empty($chatModel)){
                        $newChat = new Chats();
                        $newChat->user1 = $senderId;
                        $newChat->user2 = $receiverId;
                        $newChat->lastMessage = $encodeMsg;
                        $newChat->lastToRead = $receiverId;
                        $newChat->lastContacted = $timeUpdate;

                        $newChat->save();

                        $criteria = new CDbCriteria;
                        $criteria->condition = "(user1 = '$senderId' AND user2 = '$receiverId') OR (user1 = '$receiverId' AND user2 = '$senderId')";

                        $chatModel = Chats::model()->find($criteria);
                    }
                    $chatModel->lastContacted = $timeUpdate;
                    if ($chatModel->user1 == $senderId){
                        $chatModel->lastToRead = $chatModel->user2;
                    }else{
                        $chatModel->lastToRead = $chatModel->user1;
                    }
                    $chatModel->lastMessage = $encodeMsg;
            THIS SAVE FUNCTION ==>>     $chatModel->save();

                    $messageModel = new Messages();
                    $messageModel->message = $encodeMsg;
                    $messageModel->messageType = $messageType;
                    $messageModel->senderId = $senderId;
                    $messageModel->sourceId = $sourceId;
                    $messageModel->chatId = $chatModel->chatId;
                    $messageModel->createdDate = $timeUpdate;
                    $messageModel->save();              
                }

                    echo "success";
            }
            }
            else
            {
            echo "failed";
            }
        }

下面的语句可能返回一个 stdClass 类型的 "bare" 对象,它没有定义 save() 方法,因此你的错误。

$chatModel = Chats::model()->find($criteria);

运行 var_dump($chatModel); 紧跟在这条语句之后,看看你得到的是什么类型的对象。