рдУрдЖрд░рдПрдо рд╕рд┐рджреНрдзрд╛рдВрдд 2 рдореЗрдВ рдХрд╕реНрдЯрдо рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА

рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрдорд▓-рдЖрдзрд╛рд░рд┐рдд рд╕рд┐рджреНрдзрд╛рдВрдд (рдПрдХреНрд╕рдПрдордПрд▓ рдпрд╛ рдПрдиреЛрдЯреЗрд╢рди) рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдорд╛рдирдХ рд╡рд┐рдзрд┐рдпрд╛рдВ рдХреЗрд╡рд▓ рдХреБрдЫ рд╕рд░рд▓ рдлрд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрдЫ рдлрд╝реАрд▓реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдХреНрд╡реЗрд░реА рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдореВрд▓ рдХреНрд╡реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ dql рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдорд╛рд░реЗ рдореЙрдбрд▓ рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рд╕рдм рдХреЛрдб рдХреЗ рдмрдбрд╝реЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рдвреЗрд░ рдХрд╛ рдПрдХ рдкрд░рд┐рдгрд╛рдо рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдирдХрд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╕рдорд╛рди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдФрд░ рдЖрдк рдПрдХ рдПрдХрд▓ рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЙрдбрд▓ рдХреЛ рдмрд╕ рдФрд░ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ? рдХреИрд╕реЗ? рдЪрд▓реЛ рдЕрдкрдирд╛ рд▓рд┐рдЦреЛ!

рдХрд╕реНрдЯрдо рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА


рдХрд╕реНрдЯрдо рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдЧреА! рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЗрди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдЕрд░реНрде рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо (рдЧреИрд░-рдорд╛рдирдХ) рддрд░реАрдХреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдПрдВрдЯрд┐рдЯреА рдореИрдирдЬрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рднреА рд╡рд┐рдзрд┐рдпрд╛рдБ рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреА, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрдВрдбрд╛рд░ "рдЦрд░рд╛рдм" рд╣реЛрдЧрд╛ред

рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрдЬрд╝ рд╕реНрд╡рдпрдВ EntityRepository рд╡рд░реНрдЧ рдХреЗ рд╡рдВрд╢рдЬ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЕрд▓рдЧ рдлрд╝реЛрд▓реНрдбрд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА) рдФрд░ рдЖрдкрдХреЗ рдиреЗрдорд╕реНрдкреЗрд╕ (рдиреЗрдорд╕реНрдкреЗрд╕) рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ - рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рднреА рд╣реЛрдиреЗ рджреЗрдВред

рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рднрдВрдбрд╛рд░ рдврд╛рдВрдЪреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
namespace Repositories; use Doctrine\ORM\EntityRepository; use Entities; class UserRepository extends EntityRepository { public function getUserMethod($params) { } } 



рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдВрд░рдЪрдирд╛


рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреА рдлрд╝реЛрд▓реНрдбрд░ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:


рд╕рд┐рджреНрдзрд╛рдВрдд рд╕рдВрдмрдВрдз


рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдФрд░ ClassLoader рдХреЛ Doctrine рд╕рд╛рдорд╛рдиреНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди cli-config.php рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИ ред рдХреЛрдб рдХреА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
 //    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(); ... 


рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдореЙрдбрд▓ рд╕реЗ рдЬреЛрдбрд╝рдирд╛


рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд╕рд╛рде рдореЙрдбрд▓ рдХреЗ рдЬреБрдбрд╝рд╛рд╡ рдХрд╛ рд╕реНрдерд╛рди рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореИрдкрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рдПрдиреЛрдЯреЗрд╢рди, рдорд┐рдЪреЗрд▓ рдпрд╛ рдПрдХреНрд╕рдПрдордПрд▓)ред рдЪреВрдВрдХрд┐ рд╣рдо YAML рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖рддрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреНрд▓реИрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЬрд╣рд╛рдВ рд╣рдо рд╡рд░реНрдЧ рдФрд░ рдЙрд╕рдХреЗ рдирд╛рдо рд╕реНрдерд╛рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ:
 Entities\ModelName: type: entity repositoryClass: Repositories\UserRepository table: model_table fields: ... 


рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ YAML рдХреЗ рд▓рд┐рдП рдПрдиреНрдереЛрд▓реЙрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ рдЙрддреНрдкрдиреНрди рдореЙрдбрд▓ рд╣реИред
 namespace Entities; use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\EntityRepository; /** * Entities\ModelName * * @Table(name="model_table") * @Entity(repositoryClass="Repositories\UserRepository") */ class ModelName { ... } 


рдмрд╕ рдЗрддрдирд╛ рд╣реАред рдЕрдм рдЖрдк рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдореЙрдбрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реЛ рдЧрдпрд╛ред

рдЙрджрд╛рд╣рд░рдг


рдПрдХ рдЫреЛрдЯрд╛ рдЬреАрд╡рди рдЙрджрд╛рд╣рд░рдг рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдореВрдб рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЦреБрдж рдХреА рд╡рд┐рдзрд┐ рд▓рд┐рдЦрдиреЗ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
/Entities/UserMood.php
 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. } 


/yaml/Entities.UserMood.dcm.yml

 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 


/Repositories/RUserMood.php

рдпрд╣рд╛рдВ рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рддрд░реАрдХреЗ рдореЗрдВ рдПрдВрдЯрд┐рдЯреА рдореИрдирдЬрд░ ($ em) рдХреИрд╕реЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 $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); 


рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ



рдкреБрдирд╢реНрдЪ

рдЪреВрдВрдХрд┐ рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ PHP рдФрд░ рдбреЙрдХреНрдЯреНрд░рд┐рди рдореЗрдВ ORM рдХрд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ 100% рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рд╣реЛрдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдЗрд╕рд▓рд┐рдП рдзреНрд╡рдирд┐ рдЖрд▓реЛрдЪрдирд╛ рдХрд╛ рдмрд╣реБрдд рд╕реНрд╡рд╛рдЧрдд рд╣реИ! рдЖрдк рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

Source: https://habr.com/ru/post/In130275/


All Articles