首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >$model->save()添加'where id = 1‘条件

$model->save()添加'where id = 1‘条件
EN

Stack Overflow用户
提问于 2014-07-10 14:27:38
回答 1查看 124关注 0票数 1

我试图更新一个模型,我加载模型,从帖子中获取所有数据,然后保存它,简单.但是我的记录从来没有更新过,所以转到日志中,发现更新查询添加了一个奇怪的条件。MD_ID是我的主要钥匙。

因此,我加载模型,下一行是Yii生成的SQL:

代码语言:javascript
复制
$model = Ositems::model()->findByPk($id);

SELECT * FROM "MTODETALLADO_INV" "t" WHERE "t"."MD_ID"=249217

如果回显加载模型的json_encode,则在浏览器中得到字典:

代码语言:javascript
复制
echo json_encode($model->getAttributes());

{""MD_BODEGA":"01","MD_PRODUCTO":"0031253","MD_CANTIDAD":"1","MD_PRECIOTOTAL":"1466",,"MD_PORCENTAJEDESCUENTO":"0","MD_IDCABECERA":"97403","MD_ID":"249217","MD_OBSERVACION":null}

在这一点上,一切看起来都是正确的,现在我从post中取值:

代码语言:javascript
复制
$model->attributes = $_POST;

在这里,如果回显模型的值,我得到正确的新值,现在是问题:我保存模型,这是SQL运行(我替换了:yp_值,以使它更易读)

代码语言:javascript
复制
$model->save();

UPDATE "MTODETALLADO_INV" SET 

MD_BODEGA"='01'
MD_PRODUCTO"='0020514
MD_CANTIDAD"='10'
MD_PORCENTAJEDESCUENTO"='0
MD_IDCABECERA"=97403
MD_ID"=249218
MD_PRECIOTOTAL"='36210'
MD_OBSERVACION"=''

WHERE "MTODETALLADO_INV"."MD_ID"=1

问题就在这里!WHERE“MTODETALLADO_INV”。“MD_ID”=1,如果我的模型id一直是249218,为什么要把它变成1呢?

注意事项:我的模型只从实际表中获取一些我需要的列,Yii将其他列设置为null,并在前面的代码中省略了它们。表位于一个外接数据库中,我使用了一个自定义ActiveRecord,它根据用户将CDbConnection管理到数据库。(这是一个webservice应用程序)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-11 22:39:24

我遵循函数save()所做的事情,最终会发现问题是当它试图获得主键时。我的模型中有这样的方法:

代码语言:javascript
复制
public function primaryKey()
    {
        return array('MS_ID');
    }
}

但它必须是:

代码语言:javascript
复制
public function primaryKey()
    {
        return 'MS_ID';
    }
}

不知怎么的,这就是问题的根源。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24679197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档