/** * Override to provide a performance boost by relying on cached row data regarding uniqueness of a currency. * This was required since the currency validator was running anytime a currencyValue is validated. Yet we don't * need to check the validation of currency all the time since currency does not change often and not from a * related model. * (non-PHPdoc) * @see RedBeanModel::isUniqueAttributeValue() */ public function isUniqueAttributeValue($attributeName, $value) { if ($attributeName != 'code') { return parent::isUniqueAttributeValue($attributeName, $value); } assert('$value !== null'); if (isset(static::$currencyIdRowsByCode[$value])) { $rows = static::$currencyIdRowsByCode[$value]; } else { $modelClassName = $this->attributeNameToBeanAndClassName[$attributeName][1]; $tableName = self::getTableName($modelClassName); $rows = R::getAll('select id from ' . $tableName . " where {$attributeName} = ?", array($value)); static::$currencyIdRowsByCode[$value] = $rows; } return count($rows) == 0 || count($rows) == 1 && $rows[0]['id'] == $this->id; }