标签 model 下的文章

$model->save()的时候,如果不符合rules,会导致保存失败,但不抛出异常,所以这个时候,就需要看一下是不是rules设置的问题,所以可以这样做:

$model->save(false)

这样做,就是绕过了rules里对数据的validation,首先保证了,你对数据库的CRUD是成功的,代码是OK的,然后再看,是否是数据的问题。

这是文档里说的:

Deleting An Existing Model By Key
In the example above, we are retrieving the model from the database before calling the delete method. However, if you know the primary key of the model, you may delete the model without retrieving it. To do so, call the destroy method:

App\Flight::destroy(1);
App\Flight::destroy([1, 2, 3]);
App\Flight::destroy(1, 2, 3);

那么,这个destroy的返回值是什么呢?怎样判断是否删除成功了呢?

- 阅读剩余部分 -

Model类或者ActiveRecord类,里面会有一个rules,规定了所有的attribute的限制条件。
然后呢,万一生成的时候,把id也写到rules里,而且是['id', required]
好了,就傻逼了,保存不了,而且不报错。

而且,更要命的是,transaction还不回滚!!!

可以说,用gii生成的代码问题多多,都遇到两回因为gii的原因导致的问题了。

2018年6月8日更新:
这是由于如果$user->save()失败,会返回false,但不抛出异常,应该用if判断一下,如果返回false,则手动抛出异常。