DateTime рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХрд╛ рджреЛрд╣рд░рд╛рд╡

рджреВрд╕рд░реЗ рджрд┐рди рдореБрдЭреЗ Doctrine2 (рд╕рдВрд╕реНрдХрд░рдг 2.2.2) рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдПрдХ рдЕрдЬреАрдм рддреНрд░реБрдЯрд┐ рдЖрдИред

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рд░


рдбреЗрдЯрд╛рдЗрдо рдкреНрд░рдХрд╛рд░ рдХреА рдХреБрдВрдЬреА рд╡рд╛рд▓реА рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп (рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ), рдбреЙрдХреНрдЯреНрд░рд┐рди рдиреЗ рдПрдХ рд╕рд░рдгреА рдХреЛ рдПрдХ рд╡рд╕реНрддреБ (рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐) рд╕реЗ рднрд░рд╛ рдФрд░ рдЙрд╕рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд▓реМрдЯрд╛ рджрд┐рдпрд╛ред


рддреНрд░реБрдЯрд┐ рд╡рд┐рд╡рд░рдг


рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ, рдЖрдЗрдП рдЗрд╕реЗ PublisherDailyStatistic рдХрд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рджреЛ рдХреБрдВрдЬреА рд╣реИрдВ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ, рдПрдХ рдХреБрдВрдЬреА, рд▓реЗрдХрд┐рди рдПрдХ рд╕рдордЧреНрд░ рдПрдХ):
1) рдкреНрд░рдХрд╛рд╢рдХрдЖрдИрдбреА рдкреВрд░реНрдгрд╛рдВрдХ
2) рд╕реНрдЯреЗрдЯрд┐рд╕реНрдЯрд┐рдХрдбреЙрдЯ рдбреЗрдЯрд╛рдЗрдо
рддрджрдиреБрд╕рд╛рд░, рдПрдХ рджрд┐рди рдореЗрдВ рдПрдХ рдмрд╛рд░ рдкреНрд░рдХрд╛рд╢рдХреЛрдВ рдХреЗ рдЖрдВрдХрдбрд╝реЗ рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбреЗрдЯрд╛ рд╣реИ:
PublisherIDStatisticDTSomeContent
12012-04-15 00:00:00рдкрд░реАрдХреНрд╖рдг 15
12012-04-16 00:00:00рдкрд░реАрдХреНрд╖рдг 16
12012-04-17 00:00:00рдкрд░реАрдХреНрд╖рдг 17


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА (~ PublisherDailyStatisticRepository.php) рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкреНрд░рдХрд╛рд╢рдХ рдХреЗ рдЖрдВрдХрдбрд╝реЗ рдЦреАрдВрдЪрддрд╛ рд╣реИред
рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
public function getByPublisherAndDate($publisher_id, \ DateTime $startDt, \ DateTime $endDt)
{
$qb = $ this ->_em->createQueryBuilder()
-> select ( 'p' )
-> from ( '\Model\Entity\PublisherDailyStatistic, ' p ')
->where('
p.publisherid=:publisherid ')
->andWhere('
p.statisticdt>=:startdt ')
->andWhere('
p.statisticdt<=:enddt')
->setParameters(array( "publisherid" =>( int )$publisher_id,
"startdt" =>$startDt,
"enddt" =>$endDt));

return $qb->getQuery()->getResult();
}


* This source code was highlighted with Source Code Highlighter .



рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рд╣реИ рдЬрдм рд╣рдо getByPublisherAndDate (1, 2012-04-15, 2012-04-17) рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ:

array (size=3)
0 =>
object (Model\Entity\PublisherDailyStatistic)[398]
private 'publisherid' => int 1
private 'statisticdt' =>
object ( DateTime )[381]
public 'date' => string '2012-04-15 00:00:00' (length=19)
public 'timezone_type' => int 3
public 'timezone' => string 'Europe/Moscow' (length=13)
private 'somecontent' => string 'test 15' (length=7)
1=>
object (Model\Entity\PublisherDailyStatistic)[398]
private 'publisherid' => int 1
private 'statisticdt' =>
object ( DateTime )[381]
public 'date' => string '2012-04-15 00:00:00' (length=19)
public 'timezone_type' => int 3
public 'timezone' => string 'Europe/Moscow' (length=13)
private 'somecontent' => string 'test 15' (length=7)
2 =>
object (Model\Entity\PublisherDailyStatistic)[398]
private 'publisherid' => int 1
private 'statisticdt' =>
object ( DateTime )[381]
public 'date' => string '2012-04-15 00:00:00' (length=19)
public 'timezone_type' => int 3
public 'timezone' => string 'Europe/Moscow' (length=13)
private 'somecontent' => string 'test 15' (length=7)


* This source code was highlighted with Source Code Highlighter .


рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ, рд╣реИ рдирд╛?
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рд╣рдо "рд╡рд╛рдкрд╕реА $ qb-> getQuery () -> getResult ();" рд╕реЗ "$ qb-> getQuery () -> getArrayResult ();", рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

array (size=3)
0 =>
array (size=3)
'publisherid' => int 1
'statisticdt' =>
object ( DateTime )[384]
public 'date' => string '2012-04-15 00:00:00' (length=19)
public 'timezone_type' => int 3
public 'timezone' => string 'Europe/Moscow' (length=13)
'somecontent' => string 'test 15' (length=7)
1 =>
array (size=3)
'publisherid' => int 1
'statisticdt' =>
object ( DateTime )[384]
public 'date' => string '2012-04-16 00:00:00' (length=19)
public 'timezone_type' => int 3
public 'timezone' => string 'Europe/Moscow' (length=13)
'somecontent' => string 'test 16' (length=7)
2 =>
array (size=3)
'publisherid' => int 1
'statisticdt' =>
object ( DateTime )[384]
public 'date' => string '2012-04-17 00:00:00' (length=19)
public 'timezone_type' => int 3
public 'timezone' => string 'Europe/Moscow' (length=13)
'somecontent' => string 'test 17' (length=7)


* This source code was highlighted with Source Code Highlighter .

рдпрд╛рдиреА рд╕рд╣реА рдбреЗрдЯрд╛ред

рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░рдирд╛


рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдЖрдиреЗ рд▓рдЧрд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ, рдФрд░ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдЬрд┐рд╕ рдкреНрд░рдХрд╛рд╢рдХ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЙрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдкрд░ рдкрд╛рдк рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди http://stackoverflow.com рдкрд░ рдореЗрд░рд╛ рд╕рд╡рд╛рд▓ рдЕрдиреБрддреНрддрд░рд┐рдд рд░рд╣рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдбреЙрдХреНрдЯреНрд░реАрди рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреА рддрд▓рд╛рд╢ рд╢реБрд░реВ рдХреАред
рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ "UnitEfWork" рд╡рд░реНрдЧ рдХреЗ "createEntity" рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рдпрд╛ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╣реИ:

if ($ class ->isIdentifierComposite) {
$id = array();

foreach ($ class ->identifier as $fieldName) {
$id[$fieldName] = isset($ class ->associationMappings[$fieldName])
? $data[$ class ->associationMappings[$fieldName][ 'joinColumns' ][0][ 'name' ]]
: $data[$fieldName];
}

$idHash = implode( ' ' , $id);
} else {
$idHash = isset($ class ->associationMappings[$ class ->identifier[0]])
? $data[$ class ->associationMappings[$ class ->identifier[0]][ 'joinColumns' ][0][ 'name' ]]
: $data[$ class ->identifier[0]];

$id = array($ class ->identifier[0] => $idHash);
}


* This source code was highlighted with Source Code Highlighter .


рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рддреНрд░реБрдЯрд┐ if рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдордЧреНрд░ рдХреБрдВрдЬреА рд╣реИ, рд▓реЗрдХрд┐рди рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рднреА рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИ)ред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ, рдХреЛрдб рддрд╛рд▓рд┐рдХрд╛ рдХреА рд╕рднреА рдХреБрдВрдЬреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрди рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдбреЗрдЯрд╛ $ id рд╕рд░рдгреА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ "рдЗрдВрдкреЛрдб" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рд╕реЗ $ idHash рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред рдмрд╛рдж рдореЗрдВ, $ idHash рдХреЗ рдореВрд▓реНрдп рд╕реЗ, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд╕реНрддреБ рдмрдирд╛рддреЗ рд╕рдордп рдЗрд╕ рддрд░рд╣ рдХреЗ рдбреЗрдЯрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╣реА рдХреБрдВрдЬреА рд╡рд╛рд▓реА рджреЛ рд╡рд╕реНрддреБрдПрдВ рдПрдХ рд╣реА рд╡рд╕реНрддреБ рд╣реИрдВ)ред рдпрд╣рд╛рдВ, рддрдм рд╕рдм рдХреБрдЫ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдореЗрдВ рдорд╛рдорд▓рд╛, рдкреНрд░рддреНрдпрд╛рд░реЛрдкрдг рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдЕрдкрдиреЗ рдорд╛рдорд▓реЗ "1" рдореЗрдВ рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди $ idHash рдорд┐рд▓рддрд╛ рд╣реИред
рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрдореНрдкреНрд▓рд╛рдВрдЯ рдбреЗрдЯрдЯрд╛рдЗрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИ (рдХрд┐рд╕реА рдЕрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рддрд░рд╣ рдЬрд┐рд╕рдореЗрдВ __toString () рдореИрдЬрд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ)ред
рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдмрдЧ рдЯреНрд░реИрдХрд░ рдореЗрдВ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд▓рд┐рдЦрд╛ рдерд╛ред
рдЗрд╕ рдмреАрдЪ, рдЖрдк рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рд▓реВрдк рдореЗрдВ рдПрдХ рдЪреЗрдХ рд▓рд╛рдЗрди рдЬреЛрдбрд╝рдХрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

if ($id[$fieldName] instanceof \ DateTime )
{
$id[$fieldName] = $id[$fieldName]->getTimestamp();
}


* This source code was highlighted with Source Code Highlighter .


рдпрд╣ рд╣рдм рдкрд░ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд▓реЗрдЦ рд╣реИ
рдФрд░ рдЗрддрдиреА рдЫреЛрдЯреА рд╕реА рдЧрд▓рддреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрддрдирд╛ рдЯреЗрдХреНрд╕реНрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред

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


All Articles