{"id":1105,"date":"2025-06-12T13:02:31","date_gmt":"2025-06-12T05:02:31","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/symfony\/1105.html"},"modified":"2025-06-12T13:02:31","modified_gmt":"2025-06-12T05:02:31","slug":"doctrine-%e4%b8%ad%e7%9a%84%e7%bb%93%e6%9e%9c%e6%8e%92%e5%ba%8f%ef%bc%9a%e5%ae%9e%e8%b7%b5%e6%8c%87%e5%8d%97","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/1105.html","title":{"rendered":"Doctrine \u4e2d\u7684\u7ed3\u679c\u6392\u5e8f\uff1a\u5b9e\u8df5\u6307\u5357"},"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>&#12298; Doctrine &#20013;&#32467;&#26524;&#25490;&#24207;&#30340;&#23454;&#36341;&#25351;&#21335;&#12299;<\/p>\n<p>&#22312;&#20351;&#29992; Doctrine &#36827;&#34892;&#25968;&#25454;&#24211;&#25805;&#20316;&#26102;&#65292;&#32467;&#26524;&#25490;&#24207;&#26159;&#24120;&#35265;&#30340;&#38656;&#27714;&#12290;Doctrine &#25552;&#20379;&#20102;&#22810;&#31181;&#26041;&#27861;&#26469;&#23454;&#29616;&#36825;&#19968;&#28857;&#65292;&#21253;&#25324;&#30452;&#25509;&#22312;&#26597;&#35810;&#20013;&#20351;&#29992; <code>orderBy<\/code> &#26041;&#27861;&#12289;&#20351;&#29992; <code>addOrderBy<\/code> &#26041;&#27861;&#21644;&#36890;&#36807;&#26500;&#24314;&#26597;&#35810;&#23545;&#35937;&#36827;&#34892;&#25490;&#24207;&#12290;<\/p>\n<h3>&#30452;&#25509;&#22312;&#26597;&#35810;&#20013;&#20351;&#29992; <code>orderBy<\/code><\/h3>\n<pre><code class=\"language-php\">use DoctrineORMEntityManager;\nuse DoctrineORMQueryExpr;\n\n\/\/ &#21019;&#24314; EntityManager &#23454;&#20363;\n$entityManager = $this-&gt;getDoctrine()-&gt;getManager();\n\n\/\/ &#23450;&#20041;&#26597;&#35810;\n$queryBuilder = $entityManager-&gt;createQueryBuilder();\n$queryBuilder-&gt;select('e')\n            -&gt;from('YourBundle:Entity', 'e');\n\n\/\/ &#20351;&#29992; orderBy &#26041;&#27861;&#36827;&#34892;&#25490;&#24207;\n$queryBuilder-&gt;orderBy('e.name', 'ASC'); \/\/ &#21319;&#24207;&#25490;&#24207;\n$queryBuilder-&gt;orderBy('e.price', 'DESC'); \/\/ &#38477;&#24207;&#25490;&#24207;\n\n\/\/ &#25191;&#34892;&#26597;&#35810;\n$results = $queryBuilder-&gt;getQuery()-&gt;getResult();<\/code><\/pre>\n<h3>&#20351;&#29992; <code>addOrderBy<\/code> &#26041;&#27861;<\/h3>\n<pre><code class=\"language-php\">use DoctrineORMEntityManager;\nuse DoctrineORMQueryExpr;\n\n\/\/ &#21019;&#24314; EntityManager &#23454;&#20363;\n$entityManager = $this-&gt;getDoctrine()-&gt;getManager();\n\n\/\/ &#23450;&#20041;&#26597;&#35810;\n$queryBuilder = $entityManager-&gt;createQueryBuilder();\n$queryBuilder-&gt;select('e')\n            -&gt;from('YourBundle:Entity', 'e');\n\n\/\/ &#28155;&#21152; orderBy &#26041;&#27861;&#36827;&#34892;&#25490;&#24207;\n$queryBuilder-&gt;addOrderBy('e.name', 'ASC'); \/\/ &#21319;&#24207;&#25490;&#24207;\n$queryBuilder-&gt;addOrderBy('e.price', 'DESC'); \/\/ &#38477;&#24207;&#25490;&#24207;\n\n\/\/ &#25191;&#34892;&#26597;&#35810;\n$results = $queryBuilder-&gt;getQuery()-&gt;getResult();<\/code><\/pre>\n<h3>&#36890;&#36807;&#26500;&#24314;&#26597;&#35810;&#23545;&#35937;&#36827;&#34892;&#25490;&#24207;<\/h3>\n<pre><code class=\"language-php\">use DoctrineORMEntityManager;\nuse DoctrineORMQueryExpr;\n\n\/\/ &#21019;&#24314; EntityManager &#23454;&#20363;\n$entityManager = $this-&gt;getDoctrine()-&gt;getManager();\n\n\/\/ &#23450;&#20041;&#26597;&#35810;\n$queryBuilder = $entityManager-&gt;createQueryBuilder();\n$queryBuilder-&gt;select('e')\n            -&gt;from('YourBundle:Entity', 'e');\n\n\/\/ &#26500;&#24314;&#25490;&#24207;&#26465;&#20214;\n$orderings = [\n    ['name', 'ASC'],\n    ['price', 'DESC']\n];\n\nforeach ($orderings as $ordering) {\n    $queryBuilder-&gt;addOrderBy($ordering[0], $ordering[1]);\n}\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;&#21517;&#20026; <code>Product<\/code> &#30340;&#23454;&#20307;&#31867;&#65292;&#24182;&#19988;&#25105;&#20204;&#24819;&#35201;&#26681;&#25454; <code>name<\/code> &#21644; <code>price<\/code> &#36827;&#34892;&#25490;&#24207;&#65306;<\/p>\n<pre><code class=\"language-php\">use DoctrineORMEntityManager;\nuse DoctrineORMQueryExpr;\n\n\/\/ &#21019;&#24314; EntityManager &#23454;&#20363;\n$entityManager = $this-&gt;getDoctrine()-&gt;getManager();\n\n\/\/ &#23450;&#20041;&#26597;&#35810;\n$queryBuilder = $entityManager-&gt;createQueryBuilder();\n$queryBuilder-&gt;select('p')\n            -&gt;from('YourBundle:Product', 'p');\n\n\/\/ &#20351;&#29992; orderBy &#26041;&#27861;&#36827;&#34892;&#25490;&#24207;\n$queryBuilder-&gt;orderBy('p.name', 'ASC'); \/\/ &#21319;&#24207;&#25490;&#24207;\n$queryBuilder-&gt;orderBy('p.price', 'DESC'); \/\/ &#38477;&#24207;&#25490;&#24207;\n\n\/\/ &#25191;&#34892;&#26597;&#35810;\n$results = $queryBuilder-&gt;getQuery()-&gt;getResult();<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#39318;&#20808;&#21019;&#24314;&#20102;&#19968;&#20010; <code>QueryBuilder<\/code> &#23545;&#35937;&#65292;&#24182;&#23450;&#20041;&#20102;&#35201;&#36873;&#25321;&#30340;&#21015;&#21644;&#20174;&#21738;&#20010;&#34920;&#24320;&#22987;&#26597;&#35810;&#12290;&#28982;&#21518;&#65292;&#25105;&#20204;&#20351;&#29992; <code>orderBy<\/code> &#26041;&#27861;&#23545; <code>name<\/code> &#21015;&#36827;&#34892;&#21319;&#24207;&#25490;&#24207;&#65292;&#24182;&#23545; <code>price<\/code> &#21015;&#36827;&#34892;&#38477;&#24207;&#25490;&#24207;&#12290;&#26368;&#21518;&#65292;&#25105;&#20204;&#25191;&#34892;&#26597;&#35810;&#24182;&#33719;&#21462;&#32467;&#26524;&#12290;<\/p>\n<p>&#24076;&#26395;&#36825;&#20010;&#25351;&#21335;&#33021;&#24110;&#21161;&#20320;&#22312; Doctrine &#20013;&#26377;&#25928;&#22320;&#36827;&#34892;&#32467;&#26524;&#25490;&#24207;&#12290;&#22914;&#26524;&#20320;&#26377;&#20219;&#20309;&#38382;&#39064;&#25110;&#38656;&#35201;&#36827;&#19968;&#27493;&#30340;&#24110;&#21161;&#65292;&#35831;&#38543;&#26102;&#25552;&#38382;&#65281;<\/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>&#27010;&#35272;<\/h2><p>&#23545;&#20110;&#19981;&#29087;&#24713;&#30340;&#20154;&#26469;&#35828;&#65292;Doctrine ORM&#65288;&#23545;&#35937;&#20851;&#31995;&#26144;&#23556;&#65289;&#26159;&#19968;&#20010;PHP&#24211;&#65292;&#20801;&#35768;&#24744;&#20351;&#29992;&#38754;&#21521;&#23545;&#35937;&#30340;&#26041;&#27861;&#19982;&#25968;&#25454;&#24211;&#20132;&#20114;&#12290;&#23427;&#25277;&#35937;&#20102;&#22788;&#29702;SQL&#30340;&#22797;&#26434;&#24615;&#65292;&#24182;&#35753;&#24744;&#20687;&#25805;&#20316;PHP&#23545;&#35937;&#19968;&#26679;&#25805;&#32437;&#25968;&#25454;&#24211;&#35760;&#24405;&#12290;<\/p><p>&#33719;&#21462;&#25490;&#24207;&#25968;&#25454;&#22312;&#35768;&#22810;&#24212;&#29992;&#20013;&#33267;&#20851;&#37325;&#35201;&#65292;&#20363;&#22914;&#26174;&#31034;&#25490;&#34892;&#27036;&#20998;&#25968;&#12289;&#26102;&#38388;&#32447;&#20107;&#20214;&#25110;&#25353;&#30456;&#20851;&#24615;&#32452;&#32455;&#30340;&#21015;&#34920;&#12290;&#22312;PHP&#24320;&#21457;&#30340;&#19990;&#30028;&#37324;&#65292;&#29305;&#21035;&#26159;&#22312;&#20351;&#29992;Symfony&#26694;&#26550;&#30340;&#24212;&#29992;&#31243;&#24207;&#20013;&#65292;Doctrine ORM&#26159;&#19968;&#31181;&#24120;&#35265;&#30340;&#29992;&#20110;&#31649;&#29702;&#25968;&#25454;&#24211;&#23618;&#30340;&#36873;&#25321;&#12290;Doctrine&#25552;&#20379;&#20102;&#24378;&#22823;&#30340;&#21151;&#33021;&#65292;&#21253;&#25324;&#19968;&#31181;&#28789;&#27963;&#30340;&#26041;&#24335;&#26469;&#25490;&#24207;&#32467;&#26524;&#12290;<\/p><p>&#36825;&#26412;&#23454;&#29992;&#25351;&#21335;&#23558;&#28145;&#20837;&#25506;&#35752;&#22914;&#20309;&#20351;&#29992;Doctrine&#36827;&#34892;&#32467;&#26524;&#25490;&#24207;&#30340;&#36807;&#31243;&#12290;&#26080;&#35770;&#26159;&#23545;Doctrine&#19981;&#29087;&#24713;&#30340;&#26032;&#25163;&#65292;&#36824;&#26159;&#24076;&#26395;&#25552;&#39640;&#26597;&#35810;&#25216;&#33021;&#30340;&#29992;&#25143;&#65292;&#36825;&#26412;&#20070;&#37117;&#23558;&#24102;&#20320;&#19968;&#27493;&#27493;&#22320;&#20102;&#35299;&#22914;&#20309;&#26377;&#25928;&#22320;&#25490;&#21015;&#26597;&#35810;&#32467;&#26524;&#12290;<\/p><h2>&#25490;&#24207;&#30340;&#22522;&#26412;&#27010;&#24565;&#19982;Doctrine<\/h2><p>&#35753;&#25105;&#20204;&#20808;&#36890;&#36807;&#31034;&#20363;&#26469;&#35828;&#26126;&#22914;&#20309;&#22312;Doctrine&#20013;&#32534;&#20889;&#24102;&#26377;&#25490;&#24207;&#30340;&#22522;&#26412;&#26597;&#35810;&#65306;<\/p><pre><code>\n$respository = $entityManager-&gt;getRepository('App:Entity:YourEntity');\n$query = $respository-&gt;createQueryBuilder('alias')\n   -&gt;orderBy('alias.fieldName', 'ASC')\n   -&gt;getQuery();\n$results = $query-&gt;getResult();\n<\/code><\/pre><p>&#22312;&#19978;&#36848;&#31034;&#20363;&#20013;&#65292;&#23558;&ldquo;YourEntity&rdquo;&#26367;&#25442;&#20026;&#27491;&#22312;&#22788;&#29702;&#30340;&#23454;&#20307;&#65292;&#23558;&ldquo;fieldName&rdquo;&#26367;&#25442;&#20026;&#35201;&#25490;&#24207;&#30340;&#23646;&#24615;&#12290;&#20351;&#29992;&ldquo;ASC&rdquo;&#34920;&#31034;&#21319;&#24207;&#25490;&#21015;&#65292;&#32780;&#20351;&#29992;&ldquo;DESC&rdquo;&#21017;&#29992;&#20110;&#38477;&#24207;&#25490;&#21015;&#12290;<\/p><h2>&#39640;&#32423;&#25490;&#24207;<\/h2><p>&#22312;&#22810;&#20010;&#23383;&#27573;&#25490;&#24207;&#65306;<\/p><pre><code>\n$query-&gt;addOrderBy('alias.secondFieldName', 'DESC')\n<\/code><\/pre><p>&#26500;&#24314;&#21160;&#24577;&#21487;&#25490;&#24207;&#26597;&#35810;&#65306;<\/p><pre><code>\nif ($sortBy &amp;&amp; $direction) { \n   $query-&gt;addOrderBy('alias.' . $sortBy, $direction);\n}\n<\/code><\/pre><p>&#27491;&#22312;&#22788;&#29702;&#25490;&#24207;&#30456;&#20851;&#23454;&#20307;&#30340;&#20219;&#21153;&#65292;&#35831;&#31245;&#31561;&#12290;<\/p><pre><code>\n$query\n   -&gt;leftJoin('alias.relatedEntity', 'related_alias')\n   -&gt;addOrderBy('related_alias.relatedField', 'ASC')\n<\/code><\/pre><h2>&#20351;&#29992;QueryBuilder&#36827;&#34892;&#25490;&#24207;<\/h2><p>QueryBuilder &#26159;&#19968;&#20010;&#24378;&#22823;&#30340; Doctrine &#24037;&#20855;&#65292;&#29992;&#20110;&#36890;&#36807;&#32534;&#31243;&#26041;&#24335;&#26500;&#24314;&#22797;&#26434;&#30340;&#26597;&#35810;&#12290;&#35753;&#25105;&#20204;&#30475;&#30475;&#22914;&#20309;&#20351;&#29992; QueryBuilder &#36827;&#34892;&#25490;&#24207;&#30340;&#32467;&#26524;&#12290;<\/p><h3>&#22522;&#26412;&#29992;&#27861;<\/h3><p>&#21019;&#24314;&#19968;&#20010;QueryBuilder&#23454;&#20363;&#24182;&#23450;&#20041;&#25490;&#24207;&#65306;<\/p><pre><code>\n$queryBuilder-&gt;orderBy('alias.yourField', 'ASC');\n<\/code><\/pre><p>&#20320;&#21487;&#20197;&#21516;&#26102;&#25351;&#23450;&#22810;&#20010;&#35746;&#21333;&#26465;&#20214;&#65306;<\/p><pre><code>\n$queryBuilder-&gt;orderBy('alias.field1', 'ASC')-&gt;addOrderBy('alias.field2', 'DESC');\n<\/code><\/pre><h3>&#20351;&#29992;DQL&#36827;&#34892;&#25490;&#24207;<\/h3><p>&#25968;&#25454;&#23545;&#35937;&#26597;&#35810;&#35821;&#35328;&#65288;Doctrine Query Language&#65292;&#31616;&#31216;DQL&#65289;&#26159;&#21478;&#19968;&#31181;&#19982;&#25968;&#25454;&#24211;&#20132;&#20114;&#30340;&#26041;&#24335;&#12290;&#23427;&#26159;&#19968;&#31181;SQL&#19978;&#30340;&#39640;&#32423;&#25277;&#35937;&#65292;&#29305;&#21035;&#35774;&#35745;&#29992;&#20110;&#19982;Doctrine&#19968;&#36215;&#20351;&#29992;&#12290;&#31867;&#20284;&#20110;SQL&#65292;&#24744;&#21487;&#20197;&#22312;DQL&#20013;&#23545;&#32467;&#26524;&#36827;&#34892;&#25490;&#24207;&#65306;<\/p><pre><code>\nd$entityManager-&gt;createQuery('SELECT a FROM App:Entity:YourEntity a ORDER BY a.fieldName ASC')-&gt;getResult();\n<\/code><\/pre><h2>&#26681;&#25454;&#26631;&#20934;&#36827;&#34892;&#20998;&#31867;<\/h2><p>Doctrine Criteria&#36866;&#29992;&#20110;&#21253;&#21547;&#25490;&#24207;&#36923;&#36753;&#30340;&#36807;&#28388;&#26465;&#20214;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#20351;&#29992;Criteria&#36827;&#34892;&#25490;&#24207;&#30340;&#31034;&#20363;&#65306;<\/p><pre><code>\nuse DoctrineCommonCollectionsCriteria; \/\/ at the top of your file\n\n\/\/ ... inside a method\n\n$criteria = Criteria::create()   \n   -&gt;orderBy(['fieldName' =&gt; Criteria::ASC]);\nmatchingResults = $repository-&gt;matching($criteria);\n<\/code><\/pre><h2>&#23454;&#29992;&#30340;&#25490;&#24207;&#25216;&#24039;<\/h2><p>&#26500;&#24314;&#32771;&#34385;&#20998;&#39029;&#12289;API&#21709;&#24212;&#20197;&#21450;&#20854;&#20182;&#24212;&#29992;&#20132;&#20114;&#23618;&#30340;&#25490;&#24207;&#20989;&#25968;&#65292;&#21487;&#20197;&#21019;&#24314;&#19968;&#20010;&#24378;&#22823;&#30340;&#25490;&#24207;&#26694;&#26550;&#12290;&#22312;&#23545;&#22823;&#25968;&#25454;&#38598;&#36827;&#34892;&#25490;&#24207;&#26102;&#65292;&#35831;&#32771;&#34385;&#24615;&#33021;&#24433;&#21709;&#21644;&#25968;&#25454;&#24211;&#20013;&#30340;&#32034;&#24341;&#12290;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>&#36890;&#36807;&#20351;&#29992;Doctrine&#20869;&#32622;&#30340;&#25490;&#24207;&#26597;&#35810;&#32467;&#26524;&#30340;&#26041;&#27861;&#65292;&#24320;&#21457;&#32773;&#21487;&#20197;&#32534;&#20889;&#20986;&#31934;&#30830;&#19988;&#39640;&#25928;&#30340;&#26597;&#35810;&#65292;&#20197;&#28385;&#36275;&#24212;&#29992;&#31243;&#24207;&#30340;&#21508;&#31181;&#38656;&#27714;&#12290;&#35831;&#27880;&#24847;&#25968;&#25454;&#24211;&#24615;&#33021;&#30340;&#22522;&#26412;&#24773;&#20917;&#65292;&#24182;&#23613;&#21487;&#33021;&#22320;&#21033;&#29992;&#32034;&#24341;&#26469;&#30830;&#20445;&#26597;&#35810;&#39034;&#30021;&#36816;&#34892;&#12290;<\/p><p>&#25484;&#25569;&#20102;Doctrine&#22312;&#25490;&#24207;&#32467;&#26524;&#26041;&#38754;&#30340;&#30693;&#35782;&#21518;&#65292;&#24744;&#21487;&#20197;&#36827;&#19968;&#27493;&#25552;&#39640;&#25216;&#33021;&#24182;&#26356;&#26377;&#25928;&#22320;&#20351;&#29992;Doctrine ORM&#20248;&#21270;PHP&#24212;&#29992;&#31243;&#24207;&#20013;&#30340;&#25968;&#25454;&#31649;&#29702;&#12290;<\/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; Doctrine ORM&#65288;Object-Relational Mapping&#65289;&#26694;&#26550;&#20013;&#65292;&#32467;&#26524;&#30340;&#25490;&#24207;&#26159;&#36890;&#36807;&#20351;&#29992;ORM&#25552;&#20379;&#30340;&#26041;&#27861;&#26469;&#23454;&#29616;&#30340;&#12290;&#20197;&#19979;&#26159;&#19968;&#20123;&#22522;&#26412;&#30340;&#23454;&#36341;&#25351;&#21335;&#65306;<\/p>\n<ol>\n<li>\n<p><strong>&#26597;&#35810;&#20248;&#21270;<\/strong>&#65306;\n&#22312;&#25191;&#34892;&#20219;&#20309;&#25805;&#20316;&#20043;&#21069;&#65292;&#30830;&#20445;&#26597;&#35810;&#26159;&#26368;&#20248;&#30340;&#12290;&#36991;&#20813;&#19981;&#24517;&#35201;&#30340;&#23376;&#26597;&#35810;&#21644;&#22797;&#26434;&#30340;&#26465;&#20214;&#32452;&#21512;&#12290;<\/p>\n<\/li>\n<li>\n<p><strong>&#20351;&#29992; ORDER BY<\/strong>&#65306;\n&#36890;&#24120;&#24773;&#20917;&#19979;&#65292;&#24744;&#38656;&#35201;&#23558;&#32467;&#26524;&#25353;&#26576;&#31181;&#39034;&#24207;&#25490;&#21015;&#12290;&#36825;&#21487;&#20197;&#36890;&#36807;&#20351;&#29992; <code>ORDER BY<\/code> &#20851;&#38190;&#23383;&#23436;&#25104;&#65292;&#20363;&#22914;&#65306;<\/p>\n<pre><code class=\"language-php\">$em = $this-&gt;getDoctrine()-&gt;getManager();\n$orders = $em-&gt;getRepository(Order::class)-&gt;findAll();\n\n\/\/ &#20351;&#29992; ORDER BY &#36827;&#34892;&#25490;&#24207;\n$orders = $orders-&gt;orderBy('order_date', 'DESC');<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#20351;&#29992; Criteria &#21644; QueryBuilder<\/strong>&#65306;\n&#22914;&#26524;&#24744;&#30340;&#25968;&#25454;&#24211;&#34920;&#32467;&#26500;&#20801;&#35768;&#65292;&#21487;&#20197;&#32771;&#34385;&#20351;&#29992; Criteria &#25110; Query Builder &#26469;&#29983;&#25104; SQL &#26597;&#35810;&#65292;&#36825;&#26679;&#21487;&#20197;&#22312;&#36816;&#34892;&#26102;&#36827;&#34892;&#25490;&#24207;&#12290;<\/p>\n<\/li>\n<li>\n<p><strong>&#25163;&#21160;&#25351;&#23450;&#25490;&#24207;<\/strong>&#65306;\n&#23545;&#20110;&#31616;&#21333;&#30340;&#26597;&#35810;&#65292;&#22914;&#26524;&#25490;&#24207;&#19981;&#38656;&#35201;&#22797;&#26434;&#30340;&#36923;&#36753;&#22788;&#29702;&#65292;&#20063;&#21487;&#20197;&#30452;&#25509;&#23545;&#32467;&#26524;&#36827;&#34892;&#25490;&#24207;&#12290;<\/p>\n<\/li>\n<li>\n<p><strong>&#20351;&#29992; Doctrine &#30340;&#33258;&#23450;&#20041;&#25490;&#24207;<\/strong>&#65306;\n&#22914;&#26524;&#24744;&#30340;&#19994;&#21153;&#38656;&#27714;&#38750;&#24120;&#29305;&#27530;&#65292;&#21487;&#20197;&#32771;&#34385;&#20351;&#29992; Doctrine &#33258;&#23450;&#20041;&#25490;&#24207;&#22120;&#12290;&#36825;&#26159;&#36890;&#36807;&#21019;&#24314;&#24182;&#27880;&#20876;&#33258;&#23450;&#20041;&#25490;&#24207;&#22120;&#31867;&#26469;&#23454;&#29616;&#30340;&#12290;<\/p>\n<\/li>\n<li>\n<p><strong>&#32771;&#34385;&#20351;&#29992;&#32531;&#23384;<\/strong>&#65306;\n&#20026;&#20102;&#25552;&#39640;&#24615;&#33021;&#65292;&#24744;&#21487;&#20197;&#32771;&#34385;&#20351;&#29992; Doctrine &#30340;&#32531;&#23384;&#21151;&#33021;&#26469;&#23384;&#20648;&#24050;&#25490;&#24207;&#30340;&#25968;&#25454;&#12290;&#20363;&#22914;&#65292;&#21487;&#20197;&#20351;&#29992; EntityManager &#31867;&#30340; <code>getCacheManager()<\/code> &#26041;&#27861;&#33719;&#21462;&#32531;&#23384;&#31649;&#29702;&#22120;&#65292;&#24182;&#20351;&#29992; <code>getRepository()<\/code> &#33719;&#21462; Repository &#23454;&#20363;&#65292;&#28982;&#21518;&#20351;&#29992; <code>getCacheKey()<\/code> &#26041;&#27861;&#20026;&#27599;&#20010;&#26597;&#35810;&#21019;&#24314;&#19968;&#20010;&#21807;&#19968;&#30340;&#32531;&#23384;&#38190;&#12290;<\/p>\n<\/li>\n<li>\n<p><strong>&#27979;&#35797;&#25490;&#24207;<\/strong>&#65306;\n&#23545;&#20110;&#22823;&#22411;&#39033;&#30446;&#65292;&#32534;&#20889;&#21333;&#20803;&#27979;&#35797;&#26159;&#24456;&#37325;&#35201;&#30340;&#12290;&#30830;&#20445;&#25490;&#24207;&#25805;&#20316;&#34987;&#27491;&#30830;&#22320;&#24212;&#29992;&#21040;&#25968;&#25454;&#19978;&#12290;<\/p>\n<\/li>\n<\/ol>\n<p>&#31034;&#20363;&#20195;&#30721;&#65306;<\/p>\n<pre><code class=\"language-php\">$em = $this-&gt;getDoctrine()-&gt;getManager();\n$orderRepository = $em-&gt;getRepository(Order::class);\n\n\/\/ &#21019;&#24314;&#19968;&#20010;&#26032;&#30340;Order&#23545;&#35937;\n$order = new Order();\n$order-&gt;setOrderDate(new DateTime());\n\n\/\/ &#26681;&#25454;&#35746;&#21333;&#26085;&#26399;&#23545;&#25152;&#26377;&#35746;&#21333;&#36827;&#34892;&#25490;&#24207;\n$sortedOrders = $orderRepository-&gt;findAll()\n    -&gt;orderBy($order, 'DESC');\n\nforeach ($sortedOrders as $order) {\n    echo $order-&gt;getOrderDate() . PHP_EOL;\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#39318;&#20808;&#20174;&#25968;&#25454;&#24211;&#20013;&#33719;&#21462;&#25152;&#26377;&#30340;Order&#23545;&#35937;&#65292;&#28982;&#21518;&#26681;&#25454;<code>Order<\/code>&#27169;&#22411;&#20013;&#30340;<code>order_date<\/code>&#23383;&#27573;&#23545;&#23427;&#20204;&#36827;&#34892;&#38477;&#24207;&#25490;&#24207;&#12290;&#26368;&#21518;&#65292;&#25105;&#20204;&#36941;&#21382;&#25490;&#24207;&#21518;&#30340;&#32467;&#26524;&#65292;&#24182;&#25171;&#21360;&#20986;&#27599;&#26465;&#35746;&#21333;&#30340;&#26085;&#26399;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#12298; Doctrine &#20013;&#32467;&#26524;&#25490;&#24207;&#30340;&#23454;&#36341;&#25351;&#21335;&#12299; &#22312;&#20351;&#29992; ..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[45],"tuisongtax":[],"class_list":["post-1105","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\/1105","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=1105"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=1105"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=1105"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=1105"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}