Yii模型笔记

Yii save笔记

beforsave

// 是否是更新操作
$this->isNewRecord
$install 

aftersave

// 是否是更新操作
$this->isNewRecord
$install 
//修改之前的数据 (array)
$changedAttributes

rule

// rule验证
[
    // a1 需要在 "a1" 属性所代表的字段内唯一
    ['a1', 'unique'],

    // a1 需要唯一,但检验的是 a1 的值在字段 a2 中的唯一性
    ['a1', 'unique', 'targetAttribute' => 'a2'],

    // a1 和 a2 的组合需要唯一,且它们都能收到错误提示
    [['a1', 'a2'], 'unique', 'targetAttribute' => ['a1', 'a2']],

    // a1 和 a2 的组合需要唯一,只有 a1 能接收错误提示
    ['a1', 'unique', 'targetAttribute' => ['a1', 'a2']],

    // 通过同时在 a2 和 a3 字段中检查 a2 和 a3 的值来确定 a1 的唯一性
    ['a1', 'unique', 'targetAttribute' => ['a2', 'a1' => 'a3']],
]

记addError一大坑

// 继承的save方法
    public function save($runValidation = true, $attributeNames = null)
    {
        $this->request_data = $this->setRequest();
        $this->shipping = $this->setShipping();
        return parent::save($runValidation, $attributeNames); // TODO: Change the autogenerated stub
    }
    
//save方法调用的setRequest方法
//setRequest方法调用addError调用失败
//save方法不会去执行里面的addError模型方法
    public function setRequest()
    {
        if ($this->type == 1) {
            $requestData = preg_replace("/(;)/", ';', preg_replace("/(,)/", ',', $this->request_data));
            $requestArray = explode(';', $requestData);
            $result = [];
            foreach ($requestArray as $request) {
                $request = preg_replace("/(;)/", ';', preg_replace("/(,)/", ',', $request));
                $request = explode(',', $request);
                if (count($request) !== 3) {
                    return $this->addError('request_data', '填写格式不正确!');
                }
                $result[] = [
                    'brand' => $request[0],
                    'model' => $request[1],
                    'number' => $request[2]
                ];
            }
            return json_encode($result, JSON_UNESCAPED_UNICODE);
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值