static function findRoot($class_name = '') { if (!$class_name) { $class_name = self::_getCallingClass(); } return lmbActiveRecord::findOne($class_name, lmbSQLCriteria::equal('parent_id', 0)); }
function check($value) { $criteria = lmbSQLCriteria::equal($this->field_name, $value)->addAnd('parent_id = ' . ($this->parent_id ? $this->parent_id : $this->node->getParent()->getId())); if (!$this->node->isNew()) { $criteria->addAnd('id <> ' . $this->node->getId()); } if (lmbActiveRecord::findOne(get_class($this->node), $criteria)) { $this->error($this->error_message); } }
function check($value) { $criteria = lmbSQLCriteria::equal($this->field_name, $value); if (!$this->object->isNew()) { $criteria->addAnd(new lmbSQLFieldCriteria('id', $this->object->getId(), lmbSQLFieldCriteria::NOT_EQUAL)); } $records = lmbActiveRecord::find($this->class, $criteria); if ($records->count()) { $this->error('Значение в поле {Field} уже занято'); } }
static function findOneByIdentifier($identifier) { if ($block = lmbActiveRecord::findOne('lmbCmsTextBlock', lmbSQLCriteria::equal('identifier', $identifier))) { return $block; } if (!($default_content = lmbToolkit::instance()->getConf('text_blocks')->get($identifier))) { return null; } $block = new lmbCmsTextBlock(); $block->import($default_content); $block->setIdentifier($identifier); return $block; }
/** * @param string $uri * @return lmbCmsDocument */ static function findByUri($uri) { $identifiers = explode('/', rtrim($uri, '/')); $criteria = new lmbSQLCriteria('level = 0'); $level = 0; foreach ($identifiers as $identifier) { $identifier_criteria = lmbSQLCriteria::equal('identifier', $identifier); $identifier_criteria->addAnd(lmbSQLCriteria::equal('level', $level)); $criteria->addOr($identifier_criteria); $level++; } $documents = lmbActiveRecord::find('lmbCmsDocument', $criteria); $parent_id = 0; foreach ($identifiers as $identifier) { if (!($document = self::_getNodeByParentIdAndIdentifier($documents, $parent_id, $identifier))) { return false; } $parent_id = $document->getId(); } return $document; }
private function _getKeyCriteria($resolved_key, $column = 'key') { return lmbSQLCriteria::equal($column, $resolved_key); }
function testFetch_NestedAttachProperty_In_Join() { $course1 = $this->creator->createCourse(); $course2 = $this->creator->createCourse(); $alt_course1 = $this->creator->createCourse(); $alt_course2 = $this->creator->createCourse(); $lecture1 = $this->creator->createLecture($course1, $alt_course2); $lecture2 = $this->creator->createLecture($course2, $alt_course1); $lecture3 = $this->creator->createLecture($course1, $alt_course2); $lecture4 = $this->creator->createLecture($course1, $alt_course1); $lecture5 = $this->creator->createLecture($alt_course2); $lecture6 = $this->creator->createLecture($alt_course1); $lecture7 = $this->creator->createLecture($alt_course2); $lecture8 = $this->creator->createLecture($alt_course1); $this->conn->resetStats(); $query = lmbARQuery::create('LectureForTest', array(), $this->conn); $query->where(lmbSQLCriteria::equal('course_id', $course1->getId())); $iterator = $query->eagerJoin('alt_course', array('attach' => 'lectures'))->fetch(); $arr = $iterator->getArray(); $this->assertEqual($this->conn->countQueries(), 2); //make sure we really eager fetching $this->db->delete('lecture_for_test'); $this->db->delete('course_for_test'); $this->conn->resetStats(); $this->assertIsA($arr[0], 'LectureForTest'); $this->assertEqual($arr[0]->getTitle(), $lecture1->getTitle()); $this->assertEqual($arr[0]->getAltCourse()->getTitle(), $alt_course2->getTitle()); $alt_course_lectures = $arr[0]->getAltCourse()->getLectures(); $this->assertEqual($alt_course_lectures[0]->getId(), $lecture5->getId()); $this->assertEqual($alt_course_lectures[1]->getId(), $lecture7->getId()); $this->assertEqual($arr[1]->getId(), $lecture3->getId()); $this->assertEqual($arr[1]->getAltCourse()->getTitle(), $alt_course2->getTitle()); $alt_course_lectures = $arr[1]->getAltCourse()->getLectures(); $this->assertEqual($alt_course_lectures[0]->getId(), $lecture5->getId()); $this->assertEqual($alt_course_lectures[1]->getId(), $lecture7->getId()); $this->assertEqual($arr[2]->getId(), $lecture4->getId()); $this->assertEqual($arr[2]->getAltCourse()->getTitle(), $alt_course1->getTitle()); $alt_course_lectures = $arr[2]->getAltCourse()->getLectures(); $this->assertEqual($alt_course_lectures[0]->getId(), $lecture6->getId()); $this->assertEqual($alt_course_lectures[1]->getId(), $lecture8->getId()); $this->assertEqual($this->conn->countQueries(), 0); }
function testFindWithKind() { $valid_object1 = new BarFooOneTableTestObject(); $valid_object1->setTitle('title1'); $valid_object1->save(); $valid_object2 = new BarFooOneTableTestObject(); $valid_object2->setTitle('title2'); $valid_object2->save(); $wrong_class_object = new FooOneTableTestObject(); $wrong_class_object->setTitle('title1'); $wrong_class_object->save(); $wrong_title_object = new FooOneTableTestObject(); $wrong_title_object->setTitle('wrong_title'); $wrong_title_object->save(); $criteria = new lmbSQLCriteria(); $criteria->add(lmbSQLCriteria::equal('title', 'title1')); $criteria->addOr(lmbSQLCriteria::equal('title', 'title2')); $records = lmbActiveRecord::find('BarFooOneTableTestObject', $criteria)->sort(array('id'))->getArray(); $this->assertEqual(count($records), 2); $this->assertEqual($records[0]->title, $valid_object1->title); $this->assertEqual($records[1]->title, $valid_object2->title); }
function remove($object) { $table = new lmbTableGateway($this->relation_info['table'], $this->conn); $criteria = new lmbSQLCriteria(); $criteria->addAnd(lmbSQLCriteria::equal($this->relation_info['field'], $this->owner->getId())); $criteria->addAnd(lmbSQLCriteria::equal($this->relation_info['foreign_field'], $object->getId())); $table->delete($criteria); $this->reset(); }
function testEqual() { $criteria = lmbSQLCriteria::equal('id', 1); $this->assertEqual($criteria, new lmbSQLFieldCriteria('id', 1, lmbSQLFieldCriteria::EQUAL)); }