easy-swoole / orm

31 stars 27 forks source link

invoke下多次更新同一模型,无法更新 #132

Closed dark-walk closed 4 years ago

dark-walk commented 4 years ago
$userModel = UserModel::invoke($client)->field(['id','money','nickname'])->get($val['uid']);
$userModel->money = QueryBuilder::inc($countMoney);
$userModel->update();

$lastResult = $userModel->lastQueryResult();
var_dump($lastResult);

此时打印$userModel会获得

object(EasySwoole\ORM\Db\Result)#161 (6) {
  ["lastInsertId":"EasySwoole\ORM\Db\Result":private]=>
  int(0)
  ["result":"EasySwoole\ORM\Db\Result":private]=>
  bool(true)
  ["lastError":"EasySwoole\ORM\Db\Result":private]=>
  string(0) ""
  ["lastErrorNo":"EasySwoole\ORM\Db\Result":private]=>
  int(0)
  ["affectedRows":"EasySwoole\ORM\Db\Result":private]=>
  int(1)
  ["totalCount":"EasySwoole\ORM\Db\Result":private]=>
  int(0)
}

无法获取$userModel内的对象属性,比如 $userModel->money

也无法再更第二次更新,如:

$userModel->update(['nickname' => $nickname],['id' => $val['uid']]);
xuanyanwow commented 4 years ago

代码中打印的并非Model数据,Resutl为预期效果。 用法是没问题的,自行按照文档检查。

dark-walk commented 4 years ago

代码中打印的并非Model数据,Resutl为预期效果。 用法是没问题的,自行按照文档检查。

文档也没有写,而且我上面说了我在第一个已经实例化了一次userModel,我这个时候先select再update正常来讲是可以的,但是不行。可以自己测试下就知道

xuanyanwow commented 4 years ago
             DbManager::getInstance()->invoke(function ($client){
            $test = Test::invoke($client, ['name'=>"siam"]);
            $id = $test->save();

            $model = Test::invoke($client)->get($id);
            $model->name="update1";
            $res = $model->update();
            var_dump($res);

            $updateRes =  Test::invoke($client)->get($id);
            if ($updateRes->name === "update1"){
                var_dump("update1 success");
            }

            $model->name = "update2";
            $res = $model->update();
            var_dump($res);

            $updateRes =  Test::invoke($client)->get($id);
            if ($updateRes->name === "update2"){
                var_dump("update2 success");
            }
        });

运行结果 bool(true) string(15) "update1 success" bool(true) string(15) "update2 success"