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

问题描述 投票:0回答:1

我正在创建一个聊天弹出窗口,在这个窗口中,一个用户将与另一个用户发起对话。在我的initiatechat函数中,我有以下错误调用未定义的方法stdClass::save()。

查看代码,发现 这个save函数==>&gt。 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";
            }
        }
php yii yii2-model
1个回答
1
投票

下面的语句大概是返回一个类型为 "裸 "的对象。stdClass,它并没有定义一个 save() 方法,因此出现错误。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.