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);
}
}