2016-06-12 13:45:35 9853次浏览 5条回答 0 悬赏 10 金钱

yii2 如何以数组的形式保存到数据库?yii2自带的save()是以对象的方式保存到数据库的,我现在想用数组的形式保存,还能用save吗?应该怎么写呢?

  • 回答于 2016-06-12 14:33 举报

    你看看这样行不行:

    $goods= new Goods();
    $attr=['name'=>'西门子','price'=>12,'brand'=>'TOTO'];
    $goods->setAttributes($attr);
    $goods->save();
    
    4 条回复
    回复于 2016-06-12 17:30 回复

    这样是可以的,你知道如何判断,这条数据是更新还是添加吗?

    回复于 2016-06-13 09:25 回复

    那个save()方法就可以判断是更新还是添加:

        public function save($runValidation = true, $attributeNames = null)
        {
            if ($this->getIsNewRecord()) {
                return $this->insert($runValidation, $attributeNames);
            } else {
                return $this->update($runValidation, $attributeNames) !== false;
            }
        }
    

    这是源码里的save方法,你可以去看一下文档

    回复于 2016-06-13 09:40 回复

    直接用save好像不行,如果更新的话,首先得根据id查询一下这条数据,然后返回model,是这样的吗?

    回复于 2016-06-13 09:46 回复
  • 回答于 2016-06-12 15:43 举报

    直接将 数组转成 json 取出来的时候 转成数组 多方便

    觉得很赞
  • 回答于 2016-06-13 14:07 举报

    就是,直接格式化多方便,灵活点。

    觉得很赞
  • 回答于 2016-06-13 17:56 举报

    转json不就好了吗,取出来再转数组啊

  • 回答于 2016-06-18 00:43 举报

    我赞成YiiSoEasy的方法,直接序列化后储存。表单一类的数据都可以序列化。
    甚至可以序列化一个类存在数据库并在‘合适位置’调用,至于什么是合适位置请自行研究。

您需要登录后才可以回答。登录 | 立即注册
小程府
经理

小程府 北京

注册时间:2016-03-23
最后登录:2021-02-09
在线时长:30小时31分
  • 粉丝13
  • 金钱255
  • 威望100
  • 积分1555

热门问题