public function getColIdByName($fieldNameString, $categoryNameString = '') { $findParams = \GO\Base\Db\FindParams::newInstance()->single()->select('`t`.`id`')->joinModel(array('model' => 'GO\\Customfields\\Model\\Category', 'localTableAlias' => 't', 'localField' => 'category_id', 'foreignField' => 'id', 'tableAlias' => 'cat')); $findCriteria = \GO\Base\Db\FindCriteria::newInstance()->addCondition('name', $fieldNameString, '=', 't')->addCondition('extends_model', $this->getExtendedModel()->className(), '=', 'cat'); if (!empty($categoryNameString)) { $findCriteria->addCondition('name', $categoryNameString, '=', 'cat'); } $findParams->criteria($findCriteria); $fieldRecord = Field::model()->find($findParams); if (!empty($fieldRecord)) { return $fieldRecord->id; } else { return false; } }
/** * Get or create field if not exists * * @param int $category_id * @param string $fieldName * @return \Field */ public function createIfNotExists($category_id, $fieldName, $createAttributes = array()) { $field = Field::model()->findSingleByAttributes(array('category_id' => $category_id, 'name' => $fieldName)); if (!$field) { $field = new Field(); $field->setAttributes($createAttributes, false); $field->category_id = $category_id; $field->name = $fieldName; $field->save(); } return $field; }