This method performs the following steps in order:
1. call [[beforeValidate()]] when $runValidation is true. If validation
fails, it will skip the rest of the steps;
2. call [[afterValidate()]] when $runValidation is true.
3. call [[beforeSave()]]. If the method returns false, it will skip the
rest of the steps;
4. insert the record into collection. If this fails, it will skip the rest of the steps;
5. call [[afterSave()]];
In the above step 1, 2, 3 and 5, events [[EVENT_BEFORE_VALIDATE]],
[[EVENT_BEFORE_INSERT]], [[EVENT_AFTER_INSERT]] and [[EVENT_AFTER_VALIDATE]]
will be raised by the corresponding methods.
Only the [[dirtyAttributes|changed attribute values]] will be inserted into database.
If the primary key is null during insertion, it will be populated with the actual
value after insertion.
For example, to insert a customer record:
php
$customer = new Customer();
$customer->name = $name;
$customer->email = $email;
$customer->insert();