find() Запрос по id
$users = $dm->find(‘User’, $id);
$user = $dm->getRepository(‘User’)->find($id);
findBy – Находит множество документов по запросу
$users = $dm->getRepository(‘User’)->findBy(array(‘type’ => ‘employee’));
findOneBy – Находит Один документ по запросу
$user = $dm->getRepository(‘User’)->findOneBy(array(‘username’ => ‘jwage’));
createQueryBuilder() создать новый запрос.
$qb = $dm->createQueryBuilder(‘User’);
getQuery() исполнить запрос на получение
$qb = $dm->createQueryBuilder(‘User’);$query = $qb->getQuery();
execute() исполнить запрос, возвращает курсор для итерации
$users = $query->execute();
getSingleResult() возвращает единственный результат по запросу
$user = $dm->createQueryBuilder(‘User’)
->field(‘username’)->equals(‘jwage’)
->getQuery()
->getSingleResult();
select() выбрать определенные поля
$qb = $dm->createQueryBuilder(‘User’)
->select(‘username’, ‘password’);
$query = $qb->getQuery();
$users = $query->execute();
distinct() получить не повторяющие значения
$ages = $dm->createQueryBuilder(‘User’)
->distinct(‘age’)
->getQuery()
->execute();
hydrate() возвращает масив вместо объектов
$users = $dm->createQueryBuilder(‘User’)
->hydrate(false)
->getQuery()
->execute();
limit() количество возвращаемых заспросов skip() смещение
$blogPosts = $dm->createQueryBuilder(‘BlogPost’)
->limit(20)
->skip(40)
->getQuery()
->execute();
sort() сортировка вывод
$qb = $dm->createQueryBuilder(‘Article’)
->sort(‘createdAt’, ‘desc’);
если необходима дополнительная сортировка
$query->sort(‘featured’, ‘desc’);
map() reduce()
$qb = $this->dm->createQueryBuilder(‘Event’)
->field(‘type’)->equals(‘sale’)
->map(‘function() { emit(this.userId, 1); }’)
->reduce(«function(k, vals) {
var sum = 0;
for (var i in vals) {
sum += vals[i];
}
return sum;
}»);
$query = $qb->getQuery();
$results = $query->execute();
where()
$qb = $dm->createQueryBuilder(‘User’)
->where(«function() { return this.type == ‘admin’; }»);
field() поле
equals() равно
$qb = $dm->createQueryBuilder(‘User’)
->field(‘type’)->equals(‘admin’)
->field(‘active’)->equals(true);
in(array()) равно одному из значений
$qb = $dm->createQueryBuilder(‘Article’)
->field(‘tags.name’)->in(array(‘tag1′, ‘tag2′));
notIn(array()) не равно множеству
$qb = $dm->createQueryBuilder(‘Article’)
->field(‘tags.name’)->notIn(array(‘tag3′));
notEqual() не равно
$qb = $dm->createQueryBuilder(‘User’)
->field(‘type’)->notEqual(‘admin’);
gt() больше
$qb = $dm->createQueryBuilder(‘Account’)
->field(‘amount_due’)->gt(30);
gte() больше или равно
$qb = $dm->createQueryBuilder(‘Account’)
->field(‘amount_due’)->gte(30);
lt() меньше
$qb = $dm->createQueryBuilder(‘Account’)
->field(‘amount_due’)->lt(30);
lte() меньше или равно
$qb = $dm->createQueryBuilder(‘Account’)
->field(‘amount_due’)->lte(30);
range(10, 20) более 10 и меньше 20
$qb = $dm->createQueryBuilder(‘Account’)
->field(‘amount_due’)->range(10, 20);
size(0) размер массива
$qb = $dm->createQueryBuilder(‘Article’)
->field(‘comments’)->size(0);
exists(true) проверяет поле на наличие
$qb = $dm->createQueryBuilder(‘User’)
->field(‘login’)->exists(true);
type(‘integer’) проверяет тип поля возможные значения Double String, Object, Array, Binary data, Object id, Boolean, Date, Null, Regular expression, JavaScript code, Symbol, JavaScript code with scope, 32-bit integer, Timestamp, 64-bit integer, Min key, Max key
$qb = $dm->createQueryBuilder(‘User’)
->field(‘type’)->type(‘integer’);
all(array()) Должны возвращать все значения равны условиям
$qb = $dm->createQueryBuilder(‘User’)
->field(‘groups’)->all(array(‘Group 1′, ‘Group 2′));
mod(‘field’, array()) определяет остаток от деления
$qb = $dm->createQueryBuilder(‘Transaction’)
->field(‘field’)->mod(‘field’, array(10, 1));
set($name, $value, $atomic = true) обновляет значение
$dm->createQueryBuilder(‘User’)
->field(‘password’)->set(‘newpassword’)
->field(‘username’)->equals(‘jwage’)
->getQuery()
->execute();
setNewObj($newObj)
$dm->createQueryBuilder(‘User’)
->setNewObj(array(
‘username’ => ‘jwage’,
‘password’ => ‘password’,
// … other fields
))
->field(‘username’)->equals(‘jwage’)
->getQuery()
->execute();
inc($name, $value) увеличивает значение поля
$dm->createQueryBuilder(‘Package’)
->field(‘id’)->equals(‘theid’)
->field(‘downloads’)->inc(1)
->getQuery()
->execute();
unsetField($`field) удаляет поле
$dm->createQueryBuilder(‘User’)
->field(‘login’)->unsetField()->exists(true)
->getQuery()
->execute();
push($field, $value) добавляет новое значение в массив
$dm->createQueryBuilder(‘Article’)
->field(‘tags’)->push(‘tag5′)
->field(‘id’)->equals(‘theid’)
->getQuery()
->execute();
pushAll($field, array $valueArray) Добавляет несколько значений
$dm->createQueryBuilder(‘Article’)
->field(‘tags’)->pushAll(array(‘tag6′, ‘tag7′))
->field(‘id’)->equals(‘theid’)
->getQuery()
->execute();
addToSet($field, $value) добавляет в массив значение если его нет в массиве
$dm->createQueryBuilder(‘Article’)
->field(‘tags’)->addToSet(‘tag1′)
->field(‘id’)->equals(‘theid’)
->getQuery()
->execute();
addManyToSet($field, array $values) Добавляет несколько значений в массив если их нет в массиве
$dm->createQueryBuilder(‘Article’)
->field(‘tags’)->addManyToSet(array(‘tag6′, ‘tag7′))
->field(‘id’)->equals(‘theid’)
->getQuery()
->execute();
popFirst($field) удаляет первый элемент в массиве
$dm->createQueryBuilder(‘Article’)
->field(‘tags’)->popFirst()
->field(‘id’)->equals(‘theid’)
->getQuery()
->execute();
popLast($field) удаляет последний элемент в массиве
$dm->createQueryBuilder(‘Article’)
->field(‘tags’)->popLast()
->field(‘id’)->equals(‘theid’)
->getQuery()
->execute();
pull($field, $value) удаляет все элементы массива с данным значением
$dm->createQueryBuilder(‘Article’)
->field(‘tags’)->pull(‘tag1′)
->getQuery()
->execute();
pullAll($field, array $valueArray) удаляет все значения в массиве
$dm->createQueryBuilder(‘Article’)
->field(‘tags’)->pullAll(array(‘tag1′, ‘tag2′))
->getQuery()
->execute();
remove() Удаляет документ из коллекции
$dm->createQueryBuilder(‘User’)
->remove()
->field(‘num_logins’)->equals(0)
->getQuery()
->execute();
group(array(), array(‘count’ => 0)) выполняет операцию аналогичной SQL’s GROUP BY
$result = $this->dm->createQueryBuilder(‘DocumentsUser’)
->group(array(), array(‘count’ => 0))
->reduce(‘function (obj, prev) { prev.count++; }’)
->field(‘a’)->gt(1)
->getQuery()
->execute();
Комментариев нет:
Отправить комментарий