namespace Repositories; use Doctrine\ORM\EntityRepository; use Entities; class UserRepository extends EntityRepository { public function getUserMethod($params) { } }
// define("ROOT_DIR", __DIR__); define("DOCTRINE_DIR", ROOT_DIR."/doctrine"); ... // , require_once DOCTRINE_DIR . '/lib/vendor/doctrine-common/lib/Doctrine/Common/ClassLoader.php'; // $classLoader = new ClassLoader('Repositories', ROOT_DIR); $classLoader->register(); ...
Entities\ModelName: type: entity repositoryClass: Repositories\UserRepository table: model_table fields: ...
namespace Entities; use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\EntityRepository; /** * Entities\ModelName * * @Table(name="model_table") * @Entity(repositoryClass="Repositories\UserRepository") */ class ModelName { ... }
namespace Entities; use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\EntityRepository; /** * Entities\UserMood * * @Table(name="b_mood") * @Entity(repositoryClass="Repositories\RUserMood") */ class UserMood { /** * @var integer $ID * * @Column(name="ID", type="integer") * @Id * @GeneratedValue(strategy="IDENTITY") */ private $ID; /** * @var string $ACTIVE * * @Column(name="ACTIVE", type="string", length=1, nullable=false) */ private $ACTIVE; /** * @var string $NAME * * @Column(name="NAME", type="string", length=255, nullable=false) */ private $NAME; /** * @var datetime $DATE_ACTIVE_FROM * * @Column(name="DATE_ACTIVE_FROM", type="datetime", nullable=false) */ private $DATE_ACTIVE_FROM; /** * @var decimal $VALUE * * @Column(name="VALUE", type="decimal", nullable=false) */ private $VALUE; /** * @var integer $USER_ID * * @Column(name="USER_ID", type="integer", length=6, nullable=false) */ private $USER_ID; /** * @var string $UNAUTH_HASH * * @Column(name="UNAUTH_HASH", type="string", length=255, nullable=false) */ private $UNAUTH_HASH; //..... , . //..... ORM. }
Entities\UserMood: type: entity repositoryClass: Repositories\RUserMood table: b_mood fields: ID: id: true type: integer generator: strategy: AUTO ACTIVE: type: string length: 1 nullable: false NAME: type: string length: 255 nullable: false DATE_ACTIVE_FROM: type: datetime nullable: false VALUE: type: decimal nullable: false USER_ID: type: integer length: 6 nullable: false UNAUTH_HASH: type: string length: 255 nullable: false
$this->_em
namespace Repositories; use Doctrine\ORM\EntityRepository; use Entities; class RUserMood extends EntityRepository { public function getMoodsInDateRange($from, $to, $user = false) { $qb = $this->_em->createQueryBuilder(); $filter[1] = $from; $filter[2] = $to; if (!$user) { $varwhere = $qb->expr()->andX( $qb->expr()->gte('um.DATE_ACTIVE_FROM', '?1'), $qb->expr()->lte('um.DATE_ACTIVE_FROM', '?2') ); } else { $filter[3] = $user; $varwhere = $qb->expr()->andX( $qb->expr()->gte('um.DATE_ACTIVE_FROM', '?1'), $qb->expr()->lte('um.DATE_ACTIVE_FROM', '?2'), $qb->expr()->eq('um.USER_ID', '?3') ); } $qb->add('select', new \Doctrine\ORM\Query\Expr\Select(array('um'))) ->add('from', new \Doctrine\ORM\Query\Expr\From('Entities\UserMood', 'um')) ->add('where', $varwhere) ->add('orderBy', new \Doctrine\ORM\Query\Expr\OrderBy('um.DATE_ACTIVE_FROM', 'DESC')) ->setParameters($filter); return $qb->getQuery(); } }
include_once ('../cli-config.php'); $repo = DDB::getEM()->getRepository('Entities\UserMood')->getMoodsInDateRange('2011-05-01 00:00:00', '2011-05-09 23:59:59')->getResult(); print_r($repo);
Source: https://habr.com/ru/post/130275/
All Articles