{"id":1101,"date":"2025-06-12T12:57:57","date_gmt":"2025-06-12T04:57:57","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/symfony\/1101.html"},"modified":"2025-06-12T12:57:57","modified_gmt":"2025-06-12T04:57:57","slug":"php-doctrine-%e5%a6%82%e4%bd%95%e8%bf%87%e6%bb%a4%e6%95%b0%e6%8d%ae","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/1101.html","title":{"rendered":"PHP Doctrine: \u5982\u4f55\u8fc7\u6ee4\u6570\u636e"},"content":{"rendered":"<div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--1\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/dyA-1-400x300.jpg\" alt=\"Bug&#32534;&#35793;&#29422;\" class=\"wp-image-1842\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">Bug&#32534;&#35793;&#29422;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#22312; PHP &#20013;&#20351;&#29992; Doctrine &#36827;&#34892;&#25968;&#25454;&#24211;&#25805;&#20316;&#26102;&#65292;&#36807;&#28388;&#25968;&#25454;&#26159;&#38750;&#24120;&#24120;&#35265;&#30340;&#38656;&#27714;&#12290;Doctrine &#25552;&#20379;&#20102;&#22810;&#31181;&#26041;&#27861;&#26469;&#23454;&#29616;&#36825;&#19968;&#28857;&#65292;&#21253;&#25324;&#26597;&#35810;&#26500;&#24314;&#22120;&#12289;&#26465;&#20214;&#34920;&#36798;&#24335;&#21644;&#20803;&#25968;&#25454;&#12290;&#20197;&#19979;&#26159;&#19968;&#20123;&#24120;&#35265;&#30340;&#26041;&#27861;&#21450;&#20854;&#31034;&#20363;&#65306;<\/p>\n<h3>1. &#20351;&#29992;&#26597;&#35810;&#26500;&#24314;&#22120;<\/h3>\n<p>&#26597;&#35810;&#26500;&#24314;&#22120;&#26159; Doctrine &#25552;&#20379;&#30340;&#19968;&#31181;&#24378;&#22823;&#30340;&#24037;&#20855;&#65292;&#21487;&#20197;&#29992;&#26469;&#26500;&#24314;&#22797;&#26434;&#30340; SQL &#26597;&#35810;&#12290;<\/p>\n<pre><code class=\"language-php\">use DoctrineORMEntityManager;\nuse DoctrineORMQueryBuilder;\n\n\/\/ &#33719;&#21462; EntityManager &#23454;&#20363;\n$entityManager = $this-&gt;getDoctrine()-&gt;getManager();\n\n\/\/ &#21019;&#24314; QueryBuilder &#23545;&#35937;\n$queryBuilder = $entityManager-&gt;createQueryBuilder();\n\n\/\/ &#35774;&#32622;&#34920;&#21517;\n$queryBuilder-&gt;from('AppEntityUser', 'u');\n\n\/\/ &#28155;&#21152;&#36807;&#28388;&#26465;&#20214;\n$queryBuilder-&gt;where('u.age &gt; :age')\n             -&gt;setParameter('age', 25);\n\n\/\/ &#25191;&#34892;&#26597;&#35810;\n$results = $queryBuilder-&gt;getQuery()-&gt;getResult();<\/code><\/pre>\n<h3>2. &#20351;&#29992;&#26465;&#20214;&#34920;&#36798;&#24335;<\/h3>\n<p>&#20320;&#21487;&#20197;&#30452;&#25509;&#20351;&#29992;&#26465;&#20214;&#34920;&#36798;&#24335;&#26469;&#36807;&#28388;&#25968;&#25454;&#12290;<\/p>\n<pre><code class=\"language-php\">use DoctrineORMEntityManager;\nuse DoctrineORMQueryExpr;\n\n\/\/ &#33719;&#21462; EntityManager &#23454;&#20363;\n$entityManager = $this-&gt;getDoctrine()-&gt;getManager();\n\n\/\/ &#21019;&#24314; QueryBuilder &#23545;&#35937;\n$queryBuilder = $entityManager-&gt;createQueryBuilder();\n\n\/\/ &#35774;&#32622;&#34920;&#21517;\n$queryBuilder-&gt;from('AppEntityUser', 'u');\n\n\/\/ &#20351;&#29992;&#26465;&#20214;&#34920;&#36798;&#24335;\n$expr = new Expr();\n$filter = $expr-&gt;gt('u.age', 25);\n\n\/\/ &#28155;&#21152;&#36807;&#28388;&#26465;&#20214;\n$queryBuilder-&gt;where($filter);\n\n\/\/ &#25191;&#34892;&#26597;&#35810;\n$results = $queryBuilder-&gt;getQuery()-&gt;getResult();<\/code><\/pre>\n<h3>3. &#20351;&#29992;&#20803;&#25968;&#25454;<\/h3>\n<p>&#22914;&#26524;&#20320;&#38656;&#35201;&#26681;&#25454;&#23454;&#20307;&#30340;&#23646;&#24615;&#36827;&#34892;&#36807;&#28388;&#65292;&#21487;&#20197;&#20351;&#29992;&#20803;&#25968;&#25454;&#12290;<\/p>\n<pre><code class=\"language-php\">use DoctrineORMEntityManager;\nuse DoctrineORMMappingClassMetadata;\nuse DoctrineORMQueryExpr;\n\n\/\/ &#33719;&#21462; EntityManager &#23454;&#20363;\n$entityManager = $this-&gt;getDoctrine()-&gt;getManager();\n\n\/\/ &#33719;&#21462; User &#23454;&#20307;&#30340;&#20803;&#25968;&#25454;\n$userMetadata = $entityManager-&gt;getClassMetadata('AppEntityUser');\n\n\/\/ &#21019;&#24314; QueryBuilder &#23545;&#35937;\n$queryBuilder = $entityManager-&gt;createQueryBuilder();\n\n\/\/ &#35774;&#32622;&#34920;&#21517;\n$queryBuilder-&gt;from('AppEntityUser', 'u');\n\n\/\/ &#20351;&#29992;&#20803;&#25968;&#25454;&#28155;&#21152;&#36807;&#28388;&#26465;&#20214;\n$filter = $userMetadata-&gt;getReflectionProperty('age')-&gt;isGreaterThan(25);\n\n\/\/ &#28155;&#21152;&#36807;&#28388;&#26465;&#20214;\n$queryBuilder-&gt;where($filter);\n\n\/\/ &#25191;&#34892;&#26597;&#35810;\n$results = $queryBuilder-&gt;getQuery()-&gt;getResult();<\/code><\/pre>\n<h3>&#31034;&#20363;&#20195;&#30721;<\/h3>\n<p>&#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010; <code>User<\/code> &#23454;&#20307;&#65292;&#20854;&#20013;&#26377;&#19968;&#20010; <code>age<\/code> &#23646;&#24615;&#65292;&#25105;&#20204;&#21487;&#20197;&#20351;&#29992;&#19978;&#36848;&#26041;&#27861;&#26469;&#36807;&#28388;&#24180;&#40836;&#22823;&#20110; 25 &#30340;&#29992;&#25143;&#12290;<\/p>\n<pre><code class=\"language-php\">use DoctrineORMEntityManager;\nuse DoctrineORMQueryExpr;\n\n\/\/ &#33719;&#21462; EntityManager &#23454;&#20363;\n$entityManager = $this-&gt;getDoctrine()-&gt;getManager();\n\n\/\/ &#21019;&#24314; QueryBuilder &#23545;&#35937;\n$queryBuilder = $entityManager-&gt;createQueryBuilder();\n\n\/\/ &#35774;&#32622;&#34920;&#21517;\n$queryBuilder-&gt;from('AppEntityUser', 'u');\n\n\/\/ &#20351;&#29992;&#26465;&#20214;&#34920;&#36798;&#24335;\n$expr = new Expr();\n$filter = $expr-&gt;gt('u.age', 25);\n\n\/\/ &#28155;&#21152;&#36807;&#28388;&#26465;&#20214;\n$queryBuilder-&gt;where($filter);\n\n\/\/ &#25191;&#34892;&#26597;&#35810;\n$results = $queryBuilder-&gt;getQuery()-&gt;getResult();\n\nforeach ($results as $user) {\n    echo $user-&gt;getName() . ' - ' . $user-&gt;getEmail() . '&lt;br&gt;';\n}<\/code><\/pre>\n<p>&#36890;&#36807;&#36825;&#20123;&#26041;&#27861;&#65292;&#20320;&#21487;&#20197;&#22312; PHP &#20013;&#20351;&#29992; Doctrine &#36827;&#34892;&#39640;&#25928;&#30340;&#25968;&#25454;&#24211;&#36807;&#28388;&#25805;&#20316;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--2\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/zp-400x300.jpg\" alt=\"&#40657;&#26495;Bug&#35762;&#24072;\" class=\"wp-image-1849\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#40657;&#26495;Bug&#35762;&#24072;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<body><h2>&#20171;&#32461;<\/h2><p>&#25968;&#25454;&#36807;&#28388;&#22312;&#22788;&#29702;&#25968;&#25454;&#24211;&#31649;&#29702;&#30340;&#20219;&#20309;Web&#24212;&#29992;&#20013;&#26159;&#19968;&#39033;&#33267;&#20851;&#37325;&#35201;&#30340;&#20219;&#21153;&#12290;PHP&#21644;Doctrine ORM&#65288;&#23545;&#35937;&#20851;&#31995;&#26144;&#23556;&#22120;&#65289;&#20026;&#24320;&#21457;&#20154;&#21592;&#25552;&#20379;&#20102;&#19968;&#31181;&#20248;&#38597;&#19988;&#39640;&#25928;&#30340;&#25163;&#27573;&#65292;&#20197;&#20415;&#26681;&#25454;&#21508;&#31181;&#26631;&#20934;&#26816;&#32034;&#21644;&#25805;&#20316;&#25968;&#25454;&#12290;&#22312;&#36825;&#31687;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#23558;&#28145;&#20837;&#25506;&#35752;&#22914;&#20309;&#20351;&#29992;PHP Doctrine&#36827;&#34892;&#25968;&#25454;&#36807;&#28388;&#65292;&#28085;&#30422;&#22522;&#30784;&#27010;&#24565;&#65292;&#24182;&#25552;&#20379;&#19968;&#20123;&#23454;&#38469;&#31034;&#20363;&#12290;<\/p><h2>&#29702;&#35299;Doctrine Query Builder<\/h2><p>&#23545;&#19981;&#36215;&#65292;&#25105;&#19981;&#22826;&#26126;&#30333;&#24744;&#30340;&#24847;&#24605;&#65292;&#35831;&#24744;&#37325;&#26032;&#25551;&#36848;&#19968;&#19979;&#12290;<code>QueryBuilder<\/code>Doctrine&#20013;&#30340;&#19968;&#20010;&#24378;&#22823;&#24037;&#20855;&#20801;&#35768;&#20197;&#31243;&#24207;&#21270;&#30340;&#26041;&#24335;&#20351;&#29992;PHP&#20195;&#30721;&#32534;&#20889;SQL&#26597;&#35810;&#12290;&#23427;&#25277;&#35937;&#20102;&#25968;&#25454;&#24211;&#26597;&#35810;&#30340;&#21019;&#24314;&#36807;&#31243;&#65292;&#20351;&#24744;&#21487;&#20197;&#36890;&#36807;&#38754;&#21521;&#23545;&#35937;&#30340;&#26041;&#24335;&#26469;&#36873;&#25321;&#12289;&#26356;&#26032;&#25110;&#21024;&#38500;&#25968;&#25454;&#12290;<\/p><p>&#35201;&#24320;&#22987;&#20351;&#29992;QueryBuilder&#65292;&#24744;&#39318;&#20808;&#38656;&#35201;&#19968;&#20010;QueryBuilder&#23454;&#20363;&#12290;<code>EntityManager<\/code>&#65292;ORM&#21151;&#33021;&#30340;&#20027;&#35201;&#35775;&#38382;&#28857;&#26159;&#20160;&#20040;&#12290;&#36825;&#37324;&#26159;&#25105;&#20204;&#30340;&#21019;&#24314;&#26041;&#27861;&#65306;<\/p><pre><code>$entityManager = DoctrineORMToolsSetup::createAnnotationMetadataConfiguration($paths, $isDevMode);\n$entityManager = DoctrineORMEntityManager::create($dbParams, $config);\n<\/code><\/pre><h3>&#36873;&#25321;&#25968;&#25454;<\/h3><p>&#35753;&#25105;&#20204;&#20808;&#30475;&#30475;&#19968;&#20010;&#22522;&#26412;&#30340;&#36873;&#25321;&#65306;<\/p><pre><code>$queryBuilder = $entityManager-&gt;createQueryBuilder();\n$queryBuilder-&gt;select('u')\n            -&gt;from('User', 'u');\n$query = $queryBuilder-&gt;getQuery();\n$result = $query-&gt;getResult();\n<\/code><\/pre><p>&#22312;&#19978;&#36848;&#31034;&#20363;&#20013;&#65292;&#20320;&#38656;&#35201;&#23558;&ldquo;&#29992;&#25143;&rdquo;&#26367;&#25442;&#20026;&#24744;&#30340;&#23454;&#20307;&#30340;&#23454;&#38469;&#21517;&#31216;&#12290;&ldquo;u&rdquo;&#26159;&#19968;&#20010;&#21035;&#21517;&#65292;&#29992;&#20110;&#24341;&#29992;&#26597;&#35810;&#20351;&#29992;&#30340;&#29992;&#25143;&#34920;&#12290;&#36825;&#20250;&#26816;&#32034;&#35813;&#23454;&#20307;&#30340;&#25152;&#26377;&#35760;&#24405;&#12290;<\/p><h3>&#28155;&#21152;&#26465;&#20214;<\/h3><p>&#20026;&#20102;&#36807;&#28388;&#25968;&#25454;&#65292;&#25105;&#20204;&#20351;&#29992;&#20102;&#36807;&#28388;&#22120;&#12290;<code>where<\/code>&#26041;&#27861;&#21152;&#19978;&#26465;&#20214;&#65306;<\/p><pre><code>$queryBuilder-&gt;select('u')\n            -&gt;from('User', 'u')\n            -&gt;where('u.age &gt; :age')\n            -&gt;setParameter('age', 18);\n$query = $queryBuilder-&gt;getQuery();\n$result = $query-&gt;getResult();\n<\/code><\/pre><p>&#36825;&#20010;&#36807;&#28388;&#22120;&#20250;&#31579;&#36873;&#24180;&#40836;&#22823;&#20110;18&#23681;&#30340;&#29992;&#25143;&#12290;<\/p><h3>&#39640;&#32423;&#26465;&#20214;<\/h3><p>Doctrine &#20801;&#35768;&#20351;&#29992;&#36923;&#36753;&#19982;&#65288;AND&#65289;&#21644;&#36923;&#36753;&#25110;&#65288;OR&#65289;&#26465;&#20214;&#12290;<\/p><pre><code>$queryBuilder-&gt;select('u')\n            -&gt;from('User', 'u')\n            -&gt;where('u.age &gt; :age')\n            -&gt;andWhere('u.subscription = :subscribed')\n            -&gt;setParameters(array(\n                'age' =&gt; 20,\n                'subscribed' =&gt; true\n            ));\n$query = $queryBuilder-&gt;getQuery();\n$result = $query-&gt;getResult();\n<\/code><\/pre><p>&#20197;&#19978;&#65292;&#29992;&#25143;&#36873;&#25321;&#30340;&#24180;&#40836;&#24212;&#22823;&#20110;20&#23681;&#19988;&#26377;&#27963;&#36291;&#35746;&#38405;&#12290;<\/p><h3>&#25490;&#24207;&#32467;&#26524;<\/h3><p>&#20998;&#31867;&#26159;&#30001;&#20197;&#19979;&#36807;&#31243;&#23436;&#25104;&#30340;&#12290;<code>orderBy<\/code>&#65306;<\/p><pre><code>$queryBuilder-&gt;select('u')\n            -&gt;from('User', 'u')\n            -&gt;orderBy('u.username', 'ASC');\n$query = $queryBuilder-&gt;getQuery();\n$result = $query-&gt;getResult();\n<\/code><\/pre><p>&#36825;&#23558;&#25353;&#29992;&#25143;&#21517;&#23383;&#27597;&#39034;&#24207;&#23545;&#29992;&#25143;&#36827;&#34892;&#25490;&#24207;&#36820;&#22238;&#12290;<\/p><h2>&#20351;&#29992;Repository&#31867;<\/h2><p>&#27599;&#20010;Doctrine&#20013;&#30340;&#23454;&#20307;&#31867;&#37117;&#26377;&#23545;&#24212;&#30340;Repository&#31867;&#65292;&#35813;&#31867;&#21487;&#20197;&#25552;&#20379;&#20415;&#21033;&#30340;&#26041;&#27861;&#26469;&#36873;&#25321;&#25968;&#25454;&#12290;<\/p><pre><code>$userRepository = $entityManager-&gt;getRepository('User');\n$users = $userRepository-&gt;findBy(array('age' =&gt; 20), array('username' =&gt; 'ASC'));\n<\/code><\/pre><p>&#22312;&#36825;&#31181;&#24773;&#20917;&#19979;&#65292;<code>findBy<\/code>&#29992;&#20110;&#26816;&#32034;&#25152;&#26377;&#24180;&#40836;&#20026;20&#23681;&#30340;&#29992;&#25143;&#65292;&#24182;&#25353;&#29992;&#25143;&#21517;&#25490;&#24207;&#12290;<\/p><h2>&#22797;&#26434;&#36807;&#28388;&#20351;&#29992;DQL&#65288;Doctrine Query Language&#65289;<\/h2><p>&#23545;&#20110;&#22797;&#26434;&#30340;&#36807;&#28388;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992;Doctrine Query Language&#65288;DQL&#65289;&#65292;&#23427;&#19982;SQL&#38750;&#24120;&#25509;&#36817;&#12290;<\/p><pre><code>$query = $entityManager-&gt;createQuery('SELECT u FROM User u WHERE u.age &gt; :age ORDER BY u.username ASC');\n$query-&gt;setParameter('age', 18);\n$users = $query-&gt;getResult();\n<\/code><\/pre><p>&#20351;&#29992;DQL&#65292;&#24744;&#21487;&#20197;&#33719;&#24471;SQL&#30340;&#20840;&#37096;&#21147;&#37327;&#20197;&#21450;&#23545;&#35937;&#23548;&#21521;&#29305;&#24615;&#12290;<\/p><h2>&#22788;&#29702;&#20998;&#39029;<\/h2><p>&#22312;&#22788;&#29702;&#22823;&#37327;&#25968;&#25454;&#38598;&#26102;&#65292;&#20998;&#39029;&#33267;&#20851;&#37325;&#35201;&#12290;Doctrine&#30340;Paginator&#31867;&#21487;&#20197;&#20248;&#38597;&#22320;&#22788;&#29702;&#36825;&#31181;&#24773;&#20917;&#65306;<\/p><pre><code>$dql = 'SELECT u FROM User u ORDER BY u.id ASC';\n$query = $entityManager-&gt;createQuery($dql)\n             -&gt;setFirstResult(0)\n             -&gt;setMaxResults(100);\n$paginator = new DoctrineORMToolsPaginationPaginator($query, $fetchJoinCollection = true);\nforeach ($paginator as $user) {\n    \/\/.. Do something with $user\n}\n<\/code><\/pre><h2>&#32467;&#35770;&#12290;<\/h2><p>Doctrine &#25552;&#20379;&#20102;&#22810;&#31181;&#26041;&#20415;&#19988;&#39640;&#25928;&#30340;&#36807;&#28388;&#25968;&#25454;&#30340;&#26041;&#27861;&#65292;&#21253;&#25324;&#20351;&#29992; QueryBuilder &#25110; Repository &#20989;&#25968;&#12289;&#32534;&#20889;&#33258;&#23450;&#20041;&#30340; DQL &#26597;&#35810;&#31561;&#12290;&#35760;&#24471;&#20351;&#29992;&#21442;&#25968;&#26469;&#38450;&#27490; SQL &#27880;&#20837;&#25915;&#20987;&#65292;&#24182;&#21033;&#29992;&#20998;&#39029;&#21151;&#33021;&#26469;&#22788;&#29702;&#22823;&#37327;&#25968;&#25454;&#12290;<\/p><p>&#25105;&#20204;&#24050;&#32463;&#35752;&#35770;&#20102;&#20351;&#29992;Doctrine&#36827;&#34892;&#25968;&#25454;&#36807;&#28388;&#30340;&#22522;&#26412;&#21644;&#19968;&#20123;&#26356;&#39640;&#32423;&#30340;&#20027;&#39064;&#12290;&#22312;&#24744;&#30340;&#19979;&#19968;&#20010;&#39033;&#30446;&#20013;&#24212;&#29992;&#36825;&#20123;&#25216;&#33021;&#65292;&#20197;&#20351;&#25968;&#25454;&#26597;&#35810;&#23613;&#21487;&#33021;&#31934;&#30830;&#21644;&#23433;&#20840;&#65281;<\/p><\/body>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--3\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/xygcfznnzczhsdmwydzhsmzzzmddnq-400x300.jpg\" alt=\"&#38271;&#24037;&#30721;&#22900;1523\" class=\"wp-image-2906\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#38271;&#24037;&#30721;&#22900;1523<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#22312;PHP&#20013;&#20351;&#29992;Doctrine ORM&#26102;&#65292;&#20320;&#21487;&#20197;&#36890;&#36807;&#22810;&#31181;&#26041;&#24335;&#26469;&#36807;&#28388;&#25968;&#25454;&#12290;&#20197;&#19979;&#26159;&#19968;&#20123;&#24120;&#29992;&#30340;&#26041;&#27861;&#65306;<\/p>\n<h3>1. &#20351;&#29992;ORM&#30340;<code>filterBy()<\/code>&#26041;&#27861;<\/h3>\n<pre><code class=\"language-php\">$entityManager = $this-&gt;getDoctrine()-&gt;getManager();\n$repository = $entityManager-&gt;getRepository('YourEntityClass');\n\n\/\/ &#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010;&#21517;&#20026;'users'&#30340;&#23454;&#20307;&#31867;&#65292;&#20854;&#20013;&#26377;&#19968;&#20010;&#23646;&#24615;'dateOfBirth'\n$filteredUsers = $repository-&gt;filterByDateOfBirth(new DateTime('2000-01-01'), new DateTime('2005-12-31'));<\/code><\/pre>\n<h3>2. &#20351;&#29992;ORM&#30340;<code>filter()<\/code>&#26041;&#27861;<\/h3>\n<p>&#22914;&#26524;&#20320;&#24819;&#35201;&#26356;&#28789;&#27963;&#22320;&#22788;&#29702;&#26085;&#26399;&#33539;&#22260;&#65292;&#21487;&#20197;&#20351;&#29992;<code>filter()<\/code>&#26041;&#27861;&#12290;<\/p>\n<pre><code class=\"language-php\">$entityManager = $this-&gt;getDoctrine()-&gt;getManager();\n$repository = $entityManager-&gt;getRepository('YourEntityClass');\n\n\/\/ &#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010;&#21517;&#20026;'users'&#30340;&#23454;&#20307;&#31867;&#65292;&#20854;&#20013;&#26377;&#19968;&#20010;&#23646;&#24615;'dateOfBirth'\n$filteredUsers = $repository-&gt;filter(function ($user) {\n    return (new DateTime('2000-01-01'))-&gt;before($user-&gt;getDateOfBirth()) &amp;&amp; \n           (new DateTime('2005-12-31'))-&gt;after($user-&gt;getDateOfBirth());\n});<\/code><\/pre>\n<h3>3. &#20351;&#29992;ORM&#30340;<code>where()<\/code>&#26041;&#27861;<\/h3>\n<p>&#22914;&#26524;&#20320;&#38656;&#35201;&#26356;&#22797;&#26434;&#30340;&#36923;&#36753;&#65288;&#20363;&#22914;&#65292;&#29992;&#25143;&#24517;&#39035;&#22312;&#29305;&#23450;&#30340;&#26085;&#26399;&#33539;&#22260;&#20869;&#20986;&#29983;&#65289;&#65292;&#21487;&#20197;&#20351;&#29992;<code>where()<\/code>&#26041;&#27861;&#12290;<\/p>\n<pre><code class=\"language-php\">$entityManager = $this-&gt;getDoctrine()-&gt;getManager();\n$repository = $entityManager-&gt;getRepository('YourEntityClass');\n\n\/\/ &#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010;&#21517;&#20026;'users'&#30340;&#23454;&#20307;&#31867;&#65292;&#20854;&#20013;&#26377;&#19968;&#20010;&#23646;&#24615;'dateOfBirth'\n$filteredUsers = $repository-&gt;createQueryBuilder('u')\n                        -&gt;where(u-&gt;getDateOfBirth() &gt;= '2000-01-01' &amp;&amp; u-&gt;getDateOfBirth() &lt;= '2005-12-31')\n                        -&gt;getQuery()\n                        -&gt;getArrayResult();<\/code><\/pre>\n<h3>&#31034;&#20363;&#20195;&#30721;<\/h3>\n<p>&#20551;&#35774;&#20320;&#27491;&#22312;&#20351;&#29992;PDO&#21644;PDOStatement&#23545;&#35937;&#26469;&#25191;&#34892;SQL&#26597;&#35810;&#65292;&#20320;&#38656;&#35201;&#26681;&#25454;&#26465;&#20214;&#31579;&#36873;&#32467;&#26524;&#12290;<\/p>\n<pre><code class=\"language-php\">$stmt = $pdo-&gt;prepare(\"SELECT * FROM your_table WHERE dateOfBirth BETWEEN :min AND :max\");\n$stmt-&gt;bindParam(':min', $min_date, PDO::PARAM_STR);\n$stmt-&gt;bindParam(':max', $max_date, PDO::PARAM_STR);\n\ntry {\n    $stmt-&gt;execute(['min' =&gt; '2000-01-01', 'max' =&gt; '2005-12-31']);\n} catch (PDOException $e) {\n    \/\/ &#22788;&#29702;&#25968;&#25454;&#24211;&#38169;&#35823;\n}\n\n$results = $stmt-&gt;fetchAll(PDO::FETCH_ASSOC);<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#20174;&#25968;&#25454;&#24211;&#33719;&#21462;&#25152;&#26377;dateOfBirth&#23383;&#27573;&#20540;&#20301;&#20110;2000&#24180;1&#26376;1&#26085;&#33267;2005&#24180;12&#26376;31&#26085;&#20043;&#38388;&#30340;&#35760;&#24405;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#22312; PHP &#20013;&#20351;&#29992; Doctrine &#36827;&#34892;&#25968;&#25454;&#24211;&#25805;&#20316;&#26102;&#65292;&#36807;&#038;#283..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[45],"tuisongtax":[],"class_list":["post-1101","my1js","type-my1js","status-publish","hentry","my1js2nav-symfony"],"acf":{"qian_art_seotitle":"","qian_art_seotitle_source":{"label":"SEO\u6807\u9898","type":"text","formatted_value":""},"qian_art_seokws":"","qian_art_seokws_source":{"label":"SEO\u5173\u952e\u8bcd","type":"text","formatted_value":""},"qian_art_stzhong":"","qian_art_stzhong_source":{"label":"\u4e2d | \u77ed\u6807\u9898","type":"text","formatted_value":""}},"_links":{"self":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js\/1101","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js"}],"about":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/types\/my1js"}],"author":[{"embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/users\/1"}],"wp:attachment":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/media?parent=1101"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=1101"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=1101"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=1101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}