trait DBALCrudRepository{
public function save(array &$data)
public function create(array &$data) {
public function batchUpdate(array $filter, array $data)
public function batchDelete(array $filter)
public function count(array $filter=[])
public function getList($cols='*', array $filter=[], $page = 1, $pageSize = 100, $orderBy = [])
}
使用方法如下:
<?php
namespace ItemBundle\Repositories;
use ItemBundle\Entities\ItemType;
use Doctrine\ORM\EntityRepository;
use EspierBundle\Traits\DBALCrudRepository;
class ItemTypeRepository extends EntityRepository
{
use DBALCrudRepository;
}
public function save($entity)
public function delete($entity)
public function create(array $data) {
public function batchUpdate(array $filter, array $data)
public function batchDelete(array $filter)
public function count(array $filter=[])
public function getList(array $filter=[], $page = 1, $pageSize = 100, $orderBy = [])
ORMCrudRepository 与 DBALCrudRepository 不同是 save 和 delete 方法,其输入为实体类,而不是数组。
使用方法如下:
<?php
namespace ItemBundle\Repositories;
use ItemBundle\Entities\ItemType;
use Doctrine\ORM\EntityRepository;
use EspierBundle\Traits\ORMCrudRepository;
class ItemTypeRepository extends EntityRepository
{
use ORMCrudRepository;
}
DoctrineArrayFilter
为了兼容现有代码和大家在 ECOS 中的使用习惯,在batchUpdate、batchDelete、count和getList中的 filter数组统一由 DoctrineArrayFilter 来解析。除支持 字段|操作符 外,还支持多层嵌套的 OR 和 AND 结构。
(name = '100') AND (name <> '100') AND (name < '100') AND (name <= '100') AND (name > '100') AND (name >= '100') AND (name IS NULL) AND (name IS NOT NULL) AND (name LIKE '%bar%') AND (name NOT LIKE '%foo') AND (name IN ('100', '1000')) AND (name NOT IN ('1100', '200'))
((name_and1 LIKE 'zhang') AND (name_and2 IS NULL) AND ((name_or1 IN ('100', '2020')) OR (name_or2 NOT IN ('100', '2020')) OR ((name_or_or = '1000') AND (name_or_or2 = '1000')))) AND ((name_or1 IN ('100', '2020')) OR (name_or2 NOT IN ('100', '2020')) OR ((name_or_or = '1000') AND (name_or_or2 = '1000')))