This method performs the following steps in order:
1. call [[beforeValidate()]] when $runValidation is true. If [[beforeValidate()]]
returns false, the rest of the steps will be skipped;
2. call [[afterValidate()]] when $runValidation is true. If validation
failed, the rest of the steps will be skipped;
3. call [[beforeSave()]]. If [[beforeSave()]] returns false,
the rest of the steps will be skipped;
4. insert the record into database. 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_AFTER_VALIDATE]], [[EVENT_BEFORE_INSERT]], and [[EVENT_AFTER_INSERT]]
will be raised by the corresponding methods.
Only the [[dirtyAttributes|changed attribute values]] will be inserted into database.
If the table's primary key is auto-incremental and 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();
public insert ( boolean $runValidation = true, array $attributes = null ) : boolean | ||
$runValidation | boolean | whether to perform validation (calling [[validate()]]) before saving the record. Defaults to `true`. If the validation fails, the record will not be saved to the database and this method will return `false`. |
$attributes | array | list of attributes that need to be saved. Defaults to `null`, meaning all attributes that are loaded from DB will be saved. |
return | boolean | whether the attributes are valid and the record is inserted successfully. |