{"id":1129,"date":"2025-06-12T13:42:44","date_gmt":"2025-06-12T05:42:44","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/symfony\/1129.html"},"modified":"2025-06-12T13:42:44","modified_gmt":"2025-06-12T05:42:44","slug":"php-doctrine%ef%bc%9a%e5%a6%82%e4%bd%95%e5%ae%89%e5%85%a8%e5%9c%b0%e5%9c%a8%e7%94%9f%e4%ba%a7%e7%8e%af%e5%a2%83%e4%b8%ad%e6%9b%b4%e6%96%b0%e6%95%b0%e6%8d%ae%e6%a8%a1%e5%bc%8f","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/1129.html","title":{"rendered":"PHP Doctrine\uff1a\u5982\u4f55\u5b89\u5168\u5730\u5728\u751f\u4ea7\u73af\u5883\u4e2d\u66f4\u65b0\u6570\u636e\u6a21\u5f0f"},"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;&#29983;&#20135;&#29615;&#22659;&#20013;&#23433;&#20840;&#22320;&#26356;&#26032;&#25968;&#25454;&#27169;&#22411;&#26159;&#30830;&#20445;&#31995;&#32479;&#31283;&#23450;&#24615;&#21644;&#23433;&#20840;&#24615;&#30340;&#37325;&#35201;&#27493;&#39588;&#12290;&#20197;&#19979;&#26159;&#19968;&#20123;&#26368;&#20339;&#23454;&#36341;&#21644;&#31034;&#20363;&#20195;&#30721;&#65292;&#24110;&#21161;&#20320;&#22312;&#29983;&#20135;&#29615;&#22659;&#20013;&#23433;&#20840;&#22320;&#26356;&#26032;&#25968;&#25454;&#27169;&#22411;&#65306;<\/p>\n<h3>1. &#20351;&#29992;&#29256;&#26412;&#25511;&#21046;&#31995;&#32479;&#65288;&#22914;Git&#65289;<\/h3>\n<ul>\n<li><strong>&#20248;&#28857;<\/strong>&#65306;&#20801;&#35768;&#22242;&#38431;&#25104;&#21592;&#24182;&#34892;&#24037;&#20316;&#65292;&#21516;&#26102;&#36319;&#36394;&#26356;&#25913;&#21382;&#21490;&#12290;<\/li>\n<li>\n<p><strong>&#31034;&#20363;&#20195;&#30721;<\/strong>&#65306;<\/p>\n<pre><code class=\"language-php\">\/\/ &#21021;&#22987;&#21270;Git&#20179;&#24211;\ngit init\n\n\/\/ &#28155;&#21152;&#25991;&#20214;&#21040;&#26242;&#23384;&#21306;\ngit add .\n\n\/\/ &#25552;&#20132;&#26356;&#25913;\ngit commit -m \"Initial commit\"\n\n\/\/ &#21019;&#24314;&#36828;&#31243;&#20179;&#24211;&#65288;&#20363;&#22914;GitHub&#65289;\ngit remote add origin https:\/\/github.com\/yourusername\/yourrepository.git\n\n\/\/ &#25512;&#36865;&#21040;&#36828;&#31243;&#20179;&#24211;\ngit push -u origin master<\/code><\/pre>\n<\/li>\n<\/ul>\n<h3>2. &#20351;&#29992;&#25968;&#25454;&#24211;&#36801;&#31227;&#24037;&#20855;<\/h3>\n<ul>\n<li><strong>&#20248;&#28857;<\/strong>&#65306;&#33258;&#21160;&#31649;&#29702;&#25968;&#25454;&#24211;&#32467;&#26500;&#30340;&#21464;&#21270;&#65292;&#20943;&#23569;&#25163;&#21160;&#38169;&#35823;&#12290;<\/li>\n<li>\n<p><strong>&#31034;&#20363;&#20195;&#30721;<\/strong>&#65306;<\/p>\n<pre><code class=\"language-bash\"># &#23433;&#35013;Doctrine Migrations\ncomposer require doctrine\/migrations\n\n# &#36816;&#34892;&#36801;&#31227;&#21629;&#20196;\nphp bin\/console doctrine:migrations:generate\nphp bin\/console doctrine:migrations:migrate<\/code><\/pre>\n<\/li>\n<\/ul>\n<h3>3. &#20998;&#38454;&#27573;&#26356;&#26032;<\/h3>\n<ul>\n<li><strong>&#20248;&#28857;<\/strong>&#65306;&#36991;&#20813;&#19968;&#27425;&#24615;&#26356;&#26032;&#23548;&#33268;&#30340;&#24847;&#22806;&#38382;&#39064;&#12290;<\/li>\n<li><strong>&#31034;&#20363;&#20195;&#30721;<\/strong>&#65306;\n<pre><code class=\"language-php\">\/\/ &#22312;&#29983;&#20135;&#29615;&#22659;&#20013;&#25191;&#34892;&#37096;&#20998;&#36801;&#31227;\nphp bin\/console doctrine:migrations:diff --target-version=20230401000000\nphp bin\/console doctrine:migrations:migrate<\/code><\/pre><\/li>\n<\/ul>\n<h3>4. &#39564;&#35777;&#26356;&#26032;&#21518;&#30340;&#34892;&#20026;<\/h3>\n<ul>\n<li><strong>&#20248;&#28857;<\/strong>&#65306;&#30830;&#20445;&#26032;&#25968;&#25454;&#27169;&#22411;&#27491;&#30830;&#22788;&#29702;&#29616;&#26377;&#25968;&#25454;&#12290;<\/li>\n<li>\n<p><strong>&#31034;&#20363;&#20195;&#30721;<\/strong>&#65306;<\/p>\n<pre><code class=\"language-php\">\/\/ &#26816;&#26597;&#26032;&#25968;&#25454;&#27169;&#22411;&#26159;&#21542;&#27491;&#30830;&#22788;&#29702;&#29616;&#26377;&#25968;&#25454;\n$existingData = [\n  ['id' =&gt; 1, 'name' =&gt; 'John'],\n  ['id' =&gt; 2, 'name' =&gt; 'Jane']\n];\n\n$newData = [\n  ['id' =&gt; 1, 'name' =&gt; 'John Doe'],\n  ['id' =&gt; 3, 'name' =&gt; 'Jim']\n];\n\nforeach ($existingData as $item) {\n  if (!array_key_exists($item['id'], $newData)) {\n      throw new Exception(\"Missing item with id {$item['id']}\");\n  }\n}\n\nforeach ($newData as $item) {\n  if (!array_key_exists($item['id'], $existingData)) {\n      throw new Exception(\"Duplicate item with id {$item['id']}\");\n  }\n}<\/code><\/pre>\n<\/li>\n<\/ul>\n<h3>5. &#26085;&#24535;&#35760;&#24405;&#21644;&#30417;&#25511;<\/h3>\n<ul>\n<li><strong>&#20248;&#28857;<\/strong>&#65306;&#21450;&#26102;&#21457;&#29616;&#21644;&#35299;&#20915;&#28508;&#22312;&#30340;&#38382;&#39064;&#12290;<\/li>\n<li>\n<p><strong>&#31034;&#20363;&#20195;&#30721;<\/strong>&#65306;<\/p>\n<pre><code class=\"language-php\">\/\/ &#35760;&#24405;&#26085;&#24535;\nMonologLogger::initialize([\n  'handlers' =&gt; [\n      new MonologHandlerStreamHandler('app.log', MonologLevel::DEBUG)\n  ]\n]);\n\n\/\/ &#30417;&#25511;&#25968;&#25454;&#24211;&#24615;&#33021;\n$connection = DoctrineDBALDriverManager::getConnection();\n$sql = \"EXPLAIN SELECT * FROM your_table\";\n$stmt = $connection-&gt;query($sql);\n$result = $stmt-&gt;fetchAll();\n\nforeach ($result as $row) {\n  MonologLogger::info(json_encode($row));\n}<\/code><\/pre>\n<\/li>\n<\/ul>\n<p>&#36890;&#36807;&#36825;&#20123;&#26041;&#27861;&#65292;&#20320;&#21487;&#20197;&#30830;&#20445;&#22312;&#29983;&#20135;&#29615;&#22659;&#20013;&#23433;&#20840;&#22320;&#26356;&#26032;&#25968;&#25454;&#27169;&#22411;&#65292;&#24182;&#25552;&#39640;&#31995;&#32479;&#30340;&#31283;&#23450;&#24615;&#21644;&#26381;&#21153;&#36136;&#37327;&#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>&#22312;&#20381;&#36182;&#20851;&#31995;&#25968;&#25454;&#24211;&#24320;&#21457;&#24212;&#29992;&#26102;&#65292;&#19968;&#20010;&#25345;&#32493;&#30340;&#25361;&#25112;&#26159;&#22914;&#20309;&#19981;&#24341;&#36215;&#20572;&#26426;&#25110;&#25968;&#25454;&#25439;&#22351;&#22320;&#28436;&#21270;&#25968;&#25454;&#24211;&#32467;&#26500;&#12290;PHP Doctrine ORM&#65288;&#23545;&#35937;-&#20851;&#31995;&#26144;&#23556;&#22120;&#65289;&#25552;&#20379;&#20102;&#31649;&#29702;&#25968;&#25454;&#24211;&#27169;&#24335;&#30340;&#24378;&#22823;&#24037;&#20855;&#65292;&#22312;&#24320;&#21457;&#21644;&#29983;&#20135;&#29615;&#22659;&#20013;&#24110;&#21161;&#24744;&#12290;&#26412;&#25945;&#31243;&#25506;&#35752;&#20102;&#20351;&#29992;Doctrine&#36801;&#31227;&#22312;&#29983;&#20135;&#29615;&#22659;&#20013;&#30340;&#23433;&#20840;&#27169;&#24335;&#26356;&#26032;&#31574;&#30053;&#21644;&#26368;&#20339;&#23454;&#36341;&#12290;<\/p><h2>&#29702;&#35299;Doctrine&#30340;&#36801;&#31227;&#65288;Doctrine Migrations&#65289;<\/h2><p>Doctrine&#30340;&#36801;&#31227;&#26159;&#19968;&#31181;&#36890;&#36807;&#32534;&#31243;&#26041;&#24335;&#23450;&#20041;&#25968;&#25454;&#24211;&#27169;&#24335;&#21464;&#26356;&#30340;&#26041;&#24335;&#12290;&#30456;&#27604;&#20110;&#25163;&#21160;&#26356;&#26032;&#27169;&#24335;&#25110;&#20381;&#36182;&#20110;Doctrine&#30340;schema update&#21629;&#20196;&#65292;&#36801;&#31227;&#20026;&#24744;&#25552;&#20379;&#20102;&#23545;&#25968;&#25454;&#24211;&#28436;&#36827;&#36807;&#31243;&#31934;&#32454;&#25511;&#21046;&#30340;&#33021;&#21147;&#12290;<\/p><pre><code>\/\/ Generate a new migration file\ndoctrine migrations:generate\n\n\/\/ Modify the generated migration file with schema changes\n\/\/ Execute the migration\nphp bin\/console doctrine:migrations:migrate<\/code><\/pre><h2>&#26368;&#20339;&#23454;&#36341;&#65306;&#31649;&#29702;&#36801;&#31227;<\/h2><p>&#22312;&#26356;&#26032;&#25968;&#25454;&#24211;&#27169;&#24335;&#20043;&#21069;&#65292;&#24744;&#24212;&#35813;&#36981;&#24490;&#19968;&#22871;&#26368;&#20339;&#23454;&#36341;&#26469;&#26368;&#23567;&#21270;&#39118;&#38505;&#65306;<\/p><p>&#19979;&#36848;&#36801;&#31227;&#65306;&#28155;&#21152;&#26041;&#27861;&#20197;&#20801;&#35768;&#24517;&#35201;&#26102;&#22238;&#28378;&#26356;&#25913;&#12290;<\/p><p>&#23567;&#30340;&#21464;&#26356;&#65306;&#20445;&#25345;schema&#21464;&#21270;&#20026;&#36739;&#23567;&#19988;&#36880;&#27493;&#36827;&#34892;&#65292;&#20197;&#26368;&#23567;&#21270;&#24433;&#21709;&#12290;<\/p><p>CI\/CD&#65306;&#23558;&#36801;&#31227;&#38598;&#25104;&#21040;&#25345;&#32493;&#38598;&#25104;\/&#25345;&#32493;&#37096;&#32626;&#31649;&#36947;&#20013;&#12290;<\/p><p>&#21516;&#34892;&#35780;&#23457;&#65306;&#20351;&#29992;&#20195;&#30721;&#23457;&#26597;&#26469;&#30830;&#20445;&#36801;&#31227;&#19981;&#20250;&#20135;&#29983;&#36127;&#38754;&#24433;&#21709;&#12290;<\/p><p>&#22791;&#20221;&#65306;&#22312;&#25191;&#34892;&#29983;&#20135;&#29615;&#22659;&#20013;&#30340;&#26032;&#36801;&#31227;&#20043;&#21069;&#65292;&#24635;&#26159;&#35201;&#20808;&#22791;&#20221;&#25968;&#25454;&#24211;&#12290;<\/p><p>&#27979;&#35797;&#65306;&#22312;&#23613;&#21487;&#33021;&#25509;&#36817;&#29983;&#20135;&#29615;&#22659;&#30340;&#39044;&#29983;&#20135;&#29615;&#22659;&#20013;&#23545;&#36801;&#31227;&#36827;&#34892;&#27979;&#35797;&#12290;<\/p><p>&#29256;&#26412;&#25511;&#21046;&#65306;&#22987;&#32456;&#23558;&#36801;&#31227;&#25991;&#20214;&#32435;&#20837;&#29256;&#26412;&#25511;&#21046;&#31995;&#32479;&#31649;&#29702;&#12290;<\/p><h2>&#20998;&#27493;&#25351;&#21335;&#65306;&#26356;&#26032;&#20320;&#30340;&#27169;&#24335;&#65288;schema&#65289;<\/h2><p>&#22312;&#29983;&#20135;&#29615;&#22659;&#20013;&#23433;&#20840;&#22320;&#26356;&#26032;&#25968;&#25454;&#24211;&#27169;&#24335;&#26102;&#65292;&#21487;&#20197;&#25353;&#29031;&#20197;&#19979;&#27493;&#39588;&#25805;&#20316;&#65306;<\/p><p>&#27493;&#39588; 1 &#8211; &#21019;&#24314;&#26032;&#36801;&#31227;&#65306;&#36816;&#34892;&#21629;&#20196; doctrine migrations:generate &#26469;&#29983;&#25104;&#19968;&#20010;&#26032;&#30340;&#36801;&#31227;&#25991;&#20214;&#12290;&#36825;&#23558;&#21019;&#24314;&#19968;&#20010;&#31867;&#65292;&#20854;&#20013;&#24744;&#21487;&#20197;&#22312;&#20854;&#20013;&#23450;&#20041;&#24744;&#30340;&#34920;&#32467;&#26500;&#26356;&#25913;&#12290;<\/p><p>&#27493;&#39588; 2 &#8211; &#23450;&#20041;&#27169;&#24335;&#26356;&#25913;&#65306;&#25171;&#24320;&#29983;&#25104;&#30340;&#36801;&#31227;&#25991;&#20214;&#24182;&#22312; up() &#26041;&#27861;&#20013;&#25351;&#23450;&#27169;&#24335;&#26356;&#25913;&#12290;<\/p><pre><code>public function up(Schema $schema) : void\n{\n    \/\/ Add a new column to the `user` table\n    $this-&gt;addSql('ALTER TABLE user ADD email VARCHAR(255) NOT NULL');\n}<\/code><\/pre><p>&#27493;&#39588; 3 &#8211; &#23450;&#20041;&ldquo;&#19979;&rdquo;&#26041;&#27861;&#65306;&#23454;&#29616; down() &#26041;&#27861;&#20197;&#25764;&#38144;&#30001; up() &#26041;&#27861;&#25152;&#20570;&#30340;&#26356;&#25913;&#12290;&#36825;&#30830;&#20445;&#22312;&#38656;&#35201;&#26102;&#21487;&#20197;&#36827;&#34892;&#36335;&#24452;&#22238;&#36864;&#12290;<\/p><pre><code>public function down(Schema $schema): void\n{\n    \/\/ Remove the new column from the `user` table\n    $this-&gt;addSql('ALTER TABLE user DROP email');\n}<\/code><\/pre><p>&#31532;4&#27493; &#8211; &#22312;&#26412;&#22320;&#21644;&#39044;&#29983;&#20135;&#29615;&#22659;&#20013;&#27979;&#35797;&#65306;&#22312;&#25191;&#34892;&#29983;&#20135;&#36801;&#31227;&#20043;&#21069;&#65292;&#24212;&#24443;&#24213;&#27979;&#35797;&#23427;&#20197;&#21457;&#29616;&#20219;&#20309;&#38382;&#39064;&#12290;<\/p><p>&#27493;&#39588; 5 &#8211; &#22791;&#20221;&#29983;&#20135;&#25968;&#25454;&#24211;&#65306;&#22312;&#36816;&#34892;&#29983;&#20135;&#25968;&#25454;&#24211;&#30340;&#36801;&#31227;&#20043;&#21069;&#65292;&#21153;&#24517;&#22791;&#20221;&#25972;&#20010;&#25968;&#25454;&#24211;&#12290;<\/p><p>&#27493;&#39588; 6 &#8211; &#25191;&#34892;&#36801;&#31227;&#65306;&#23436;&#25104;&#22791;&#20221;&#21644;&#27979;&#35797;&#21518;&#65292;&#20351;&#29992; doctrine:migrations:migrate &#21629;&#20196;&#25191;&#34892;&#36801;&#31227;&#12290;<\/p><pre><code>php bin\/console doctrine:migrations:migrate <\/code><\/pre><p>&#27493;&#39588; 7 &#8211; &#30417;&#25511;&#21644;&#39564;&#35777;&#65306;&#22312;&#25191;&#34892;&#36801;&#31227;&#21518;&#65292;&#23494;&#20999;&#30417;&#25511;&#24212;&#29992;&#31243;&#24207;&#21644;&#25968;&#25454;&#24211;&#20197;&#30830;&#20445;&#27809;&#26377;&#24847;&#22806;&#30340;&#34892;&#20026;&#21457;&#29983;&#12290;<\/p><h2>&#22238;&#28378;&#31574;&#30053;<\/h2><p>&#22312;&#20986;&#29616;&#38382;&#39064;&#30340;&#24773;&#20917;&#19979;&#65292;&#20320;&#38656;&#35201;&#26377;&#19968;&#20010;&#26126;&#30830;&#30340;&#22238;&#28378;&#31574;&#30053;&#65306;<\/p><p>&#24674;&#22797;&#22791;&#20221;&#65306;&#22914;&#26524;&#22312;&#36801;&#31227;&#20043;&#21518;&#21457;&#29616;&#38382;&#39064;&#65292;&#21487;&#20197;&#20174;&#20043;&#21069;&#30340;&#22791;&#20221;&#20013;&#24674;&#22797;&#25968;&#25454;&#24211;&#12290;<\/p><p>&#31435;&#21363;&#22238;&#28378;&#65306;&#22914;&#26524;&#38382;&#39064;&#22312;&#26816;&#27979;&#21040;&#21518;&#31435;&#21363;&#22788;&#29702;&#65292;&#25191;&#34892;&#36801;&#31227;&#30340;down()&#26041;&#27861;&#26469;&#22238;&#28378;&#26356;&#25913;&#12290;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>&#25353;&#29031;&#26412;&#25945;&#31243;&#35752;&#35770;&#30340;&#31574;&#30053;&#36827;&#34892;&#25805;&#20316;&#65292;&#24744;&#21487;&#20197;&#22312;&#29983;&#20135;&#29615;&#22659;&#20013;&#33258;&#20449;&#22320;&#26356;&#26032;&#25968;&#25454;&#24211;&#27169;&#24335;&#65292;&#24182;&#26368;&#22823;&#38480;&#24230;&#22320;&#38477;&#20302;&#39118;&#38505;&#12290;&#24403;&#27491;&#30830;&#20351;&#29992;&#26102;&#65292;Doctrine Migrations &#26159;&#19968;&#20010;&#24378;&#22823;&#30340;&#24037;&#20855;&#65292;&#23427;&#20204;&#20351;&#24744;&#30340;&#27169;&#24335;&#26356;&#25913;&#20445;&#25345;&#32452;&#32455;&#21270;&#21644;&#21487;&#31649;&#29702;&#12290;&#35760;&#20303;&#65292;&#20219;&#20309;&#22312;&#29983;&#20135;&#29615;&#22659;&#20013;&#30340;&#25968;&#25454;&#24211;&#27169;&#24335;&#26356;&#25913;&#31574;&#30053;&#30340;&#22522;&#30784;&#37117;&#26159;&#24443;&#24213;&#30340;&#27979;&#35797;&#21644;&#20934;&#22791;&#22909;&#30340;&#22238;&#28378;&#35745;&#21010;&#12290;&#20351;&#29992; Doctrine Migrations &#30830;&#20445;&#19968;&#33268;&#19988;&#21487;&#38752;&#30340;&#25968;&#25454;&#24211;&#26356;&#26032;&#65292;&#35753;&#24744;&#24212;&#29992;&#31243;&#24207;&#33021;&#22815;&#23433;&#20840;&#32780;&#39640;&#25928;&#22320;&#21457;&#23637;&#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;&#29983;&#20135;&#29615;&#22659;&#20013;&#26356;&#26032;&#25968;&#25454;&#24211;&#30340;&#25968;&#25454;&#27169;&#24335;&#65288;&#22914;&#23383;&#27573;&#21517;&#31216;&#21644;&#34920;&#32467;&#26500;&#65289;&#26159;&#19968;&#39033;&#37325;&#35201;&#20294;&#26377;&#26102;&#21448;&#23481;&#26131;&#20986;&#38169;&#30340;&#20219;&#21153;&#12290;&#20197;&#19979;&#26159;&#22312;&#29983;&#20135;&#29615;&#22659;&#20013;&#23433;&#20840;&#22320;&#36827;&#34892;&#27492;&#31867;&#25805;&#20316;&#30340;&#19968;&#20123;&#24314;&#35758;&#65306;<\/p>\n<ol>\n<li>\n<p><strong>&#22791;&#20221;<\/strong>&#65306;\n&#22312;&#20219;&#20309;&#20462;&#25913;&#20043;&#21069;&#65292;&#30830;&#20445;&#39318;&#20808;&#23545;&#25968;&#25454;&#24211;&#36827;&#34892;&#20840;&#37327;&#22791;&#20221;&#12290;&#36825;&#23558;&#24110;&#21161;&#20320;&#22312;&#21457;&#29983;&#24847;&#22806;&#26102;&#33021;&#22815;&#24674;&#22797;&#21040;&#19978;&#19968;&#20010;&#29366;&#24577;&#12290;<\/p>\n<\/li>\n<li>\n<p><strong>&#27979;&#35797;&#29615;&#22659;<\/strong>&#65306;\n&#21019;&#24314;&#19968;&#20010;&#29420;&#31435;&#30340;&#27979;&#35797;&#29615;&#22659;&#26469;&#25191;&#34892;&#26356;&#25913;&#12290;&#36825;&#26679;&#21487;&#20197;&#36991;&#20813;&#30452;&#25509;&#20462;&#25913;&#29983;&#20135;&#29615;&#22659;&#20013;&#30340;&#25968;&#25454;&#65292;&#24182;&#19988;&#21487;&#20197;&#22312;&#19981;&#30772;&#22351;&#23454;&#38469;&#25968;&#25454;&#30340;&#24773;&#20917;&#19979;&#39564;&#35777;&#26356;&#25913;&#26159;&#21542;&#25353;&#39044;&#26399;&#24037;&#20316;&#12290;<\/p>\n<\/li>\n<li>\n<p><strong>&#20351;&#29992;&#36801;&#31227;&#24037;&#20855;<\/strong>&#65306;\n&#36873;&#25321;&#21512;&#36866;&#30340;&#36801;&#31227;&#24037;&#20855;&#65288;&#22914;Doctrine&#30340;ORM&#36801;&#31227;&#65289;&#65292;&#20197;&#20415;&#20110;&#23433;&#20840;&#22320;&#23558;&#25968;&#25454;&#20174;&#26087;&#27169;&#24335;&#36801;&#31227;&#21040;&#26032;&#27169;&#22411;&#12290;&#36801;&#31227;&#24037;&#20855;&#36890;&#24120;&#20250;&#29983;&#25104;&#26032;&#30340;&#34920;&#32467;&#26500;&#65292;&#20174;&#32780;&#30830;&#20445;&#25968;&#25454;&#19968;&#33268;&#24615;&#12290;<\/p>\n<\/li>\n<li>\n<p><strong>&#38480;&#21046;&#35775;&#38382;&#26435;&#38480;<\/strong>&#65306;\n&#23545;&#20110;&#38656;&#35201;&#26356;&#26032;&#25968;&#25454;&#30340;&#29992;&#25143;&#65292;&#35774;&#32622;&#36866;&#24403;&#30340;&#35775;&#38382;&#25511;&#21046;&#31574;&#30053;&#12290;&#20363;&#22914;&#65292;&#21482;&#20801;&#35768;&#20855;&#26377;&#36866;&#24403;&#26435;&#38480;&#30340;&#29992;&#25143;&#36827;&#34892;&#27492;&#25805;&#20316;&#12290;<\/p>\n<\/li>\n<li>\n<p><strong>&#26085;&#24535;&#35760;&#24405;<\/strong>&#65306;\n&#22312;&#26356;&#26032;&#36807;&#31243;&#20013;&#65292;&#35760;&#24405;&#35814;&#32454;&#30340;&#21464;&#26356;&#26085;&#24535;&#12290;&#36825;&#26377;&#21161;&#20110;&#36861;&#36394;&#20309;&#26102;&#20309;&#22320;&#21457;&#29983;&#20102;&#21738;&#20123;&#25913;&#21464;&#65292;&#20197;&#21450;&#20026;&#20160;&#20040;&#36825;&#20123;&#21464;&#21270;&#26159;&#24517;&#35201;&#30340;&#12290;<\/p>\n<\/li>\n<li>\n<p><strong>&#23450;&#26399;&#23457;&#26597;<\/strong>&#65306;\n&#23450;&#26399;&#26816;&#26597;&#24182;&#20998;&#26512;&#25968;&#25454;&#27169;&#24335;&#30340;&#21464;&#21270;&#12290;&#22914;&#26524;&#21457;&#29616;&#20219;&#20309;&#38382;&#39064;&#65292;&#24212;&#31435;&#21363;&#22238;&#28378;&#21040;&#20043;&#21069;&#30340;&#29256;&#26412;&#12290;<\/p>\n<\/li>\n<li>\n<p><strong>&#25345;&#32493;&#30417;&#25511;<\/strong>&#65306;\n&#20351;&#29992;SQL&#24615;&#33021;&#30417;&#25511;&#24037;&#20855;&#65288;&#22914;APM&#12289;SQL Profiler&#31561;&#65289;&#26469;&#30417;&#35270;&#25968;&#25454;&#24211;&#24615;&#33021;&#65292;&#29305;&#21035;&#26159;&#24403;&#22823;&#37327;&#25968;&#25454;&#34987;&#26356;&#26032;&#26102;&#12290;<\/p>\n<\/li>\n<li>\n<p><strong>&#23433;&#20840;&#24615;&#32771;&#34385;<\/strong>&#65306;\n&#30830;&#20445;&#22312;&#26356;&#26032;&#21069;&#31227;&#38500;&#20102;&#25152;&#26377;&#19981;&#24517;&#35201;&#30340;&#25968;&#25454;&#12290;&#21024;&#38500;&#19981;&#38656;&#35201;&#30340;&#34892;&#25110;&#23383;&#27573;&#21487;&#20197;&#24110;&#21161;&#38450;&#27490;&#28508;&#22312;&#30340;&#23433;&#20840;&#28431;&#27934;&#12290;<\/p>\n<\/li>\n<\/ol>\n<p>&#19979;&#38754;&#26159;&#19968;&#20010;&#20351;&#29992;Doctrine ORM&#36801;&#31227;&#24037;&#20855;&#26356;&#26032;&#25968;&#25454;&#27169;&#24335;&#30340;&#20363;&#23376;&#65306;<\/p>\n<pre><code class=\"language-php\">\/\/ &#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#36801;&#31227;&#33050;&#26412;&#25991;&#20214;\nphp bin\/console doctrine:migrations:create --create-project=app\n\n\/\/ &#26356;&#26032;&#25968;&#25454;&#27169;&#24335;&#30340;&#36801;&#31227;\nphp bin\/console doctrine:migrations:migrate --force\n\n\/\/ &#26816;&#26597;&#36801;&#31227;&#21518;&#30340;&#32467;&#26524;\nphp bin\/console doctrine:schema:status<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#39318;&#20808;&#21019;&#24314;&#20102;&#19968;&#20010;&#26032;&#30340;&#36801;&#31227;&#33050;&#26412;&#25991;&#20214;&#65292;&#28982;&#21518;&#36816;&#34892;&#20102;<code>doctrine:migrations:migrate --force<\/code>&#21629;&#20196;&#26469;&#25191;&#34892;&#36801;&#31227;&#12290;&#26368;&#21518;&#65292;&#36890;&#36807;<code>doctrine:schema:status<\/code>&#21629;&#20196;&#26816;&#26597;&#36801;&#31227;&#30340;&#32467;&#26524;&#65292;&#20197;&#30830;&#35748;&#25968;&#25454;&#27169;&#24335;&#24050;&#27491;&#30830;&#26356;&#26032;&#12290;<\/p>\n<p>&#35831;&#27880;&#24847;&#65292;&#19978;&#36848;&#24314;&#35758;&#36866;&#29992;&#20110;&#20351;&#29992;PHP&#30340;PDO&#25110;PDOMySQL&#39537;&#21160;&#30340;SQL&#26597;&#35810;&#26041;&#24335;&#12290;&#23545;&#20110;&#20351;&#29992;MySQLi&#25110;&#20854;&#20182;MySQL&#39537;&#21160;&#30340;&#26041;&#24335;&#65292;&#21487;&#33021;&#38656;&#35201;&#35843;&#25972;&#19968;&#20123;&#26041;&#27861;&#21644;&#21442;&#25968;&#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;&#29983;&#20135;&#29615;&#22659;&#20013;&#23433;&#20840;&#22320;&#26356;&#26032;&#25968;&#25454;&#27169;&#22411;&#26159;&#038;#30..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[45],"tuisongtax":[],"class_list":["post-1129","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\/1129","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=1129"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=1129"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=1129"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=1129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}