public function insert($runValidation = true, $attributes = null)
    {
        if ($runValidation && !$this->validate($attributes)) {
            return false;
        }
        $db = static::getDb();
        if ($this->isTransactional(self::OP_INSERT) && $db->getTransaction() === null) {
            $transaction = $db->beginTransaction();
            try {
                $result = $this->insertInternal($attributes);
                if ($result === false) {
                    $transaction->rollBack();
                } else {
                    $transaction->commit();
                }
            } catch (\Exception $e) {
                $transaction->rollBack();
                throw $e;
            }
        } else {
            $result = $this->insertInternal($attributes);
        }

        return $result;
    }