{"id":1122,"date":"2025-06-12T13:30:54","date_gmt":"2025-06-12T05:30:54","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/symfony\/1122.html"},"modified":"2025-06-12T13:30:54","modified_gmt":"2025-06-12T05:30:54","slug":"%e5%a6%82%e4%bd%95%e5%9c%a8-doctrine-%e4%b8%ad%e6%b7%bb%e5%8a%a0%e7%b4%a2%e5%bc%95%e5%92%8c%e5%94%af%e4%b8%80%e7%ba%a6%e6%9d%9f","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/1122.html","title":{"rendered":"\u5982\u4f55\u5728 Doctrine \u4e2d\u6dfb\u52a0\u7d22\u5f15\u548c\u552f\u4e00\u7ea6\u675f"},"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; Doctrine &#20013;&#65292;&#20320;&#21487;&#20197;&#36890;&#36807;&#37197;&#32622;&#23454;&#20307;&#31867;&#26469;&#28155;&#21152;&#32034;&#24341;&#21644;&#21807;&#19968;&#32422;&#26463;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#22312;&#23454;&#20307;&#31867;&#20013;&#28155;&#21152;&#36825;&#20123;&#32422;&#26463;&#30340;&#31034;&#20363;&#65306;<\/p>\n<h3>&#28155;&#21152;&#32034;&#24341;<\/h3>\n<p>&#32034;&#24341;&#26159;&#29992;&#20110;&#25552;&#39640;&#26597;&#35810;&#24615;&#33021;&#30340;&#20851;&#38190;&#24037;&#20855;&#12290;&#20320;&#21487;&#20197;&#20351;&#29992; <code>@Column<\/code> &#27880;&#35299;&#26469;&#25351;&#23450;&#32034;&#24341;&#12290;<\/p>\n<pre><code class=\"language-php\">use DoctrineORMMapping as ORM;\n\n\/**\n * @ORMEntity\n *\/\nclass User\n{\n    \/**\n     * @ORMId\n     * @ORMGeneratedValue(strategy=\"AUTO\")\n     * @ORMColumn(type=\"integer\")\n     *\/\n    private $id;\n\n    \/**\n     * @ORMColumn(type=\"string\", length=100)\n     * @ORMIndex(name=\"idx_username\")\n     *\/\n    private $username;\n\n    \/\/ Getters and setters\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#20026; <code>username<\/code> &#23383;&#27573;&#28155;&#21152;&#20102;&#19968;&#20010;&#21517;&#20026; <code>idx_username<\/code> &#30340;&#32034;&#24341;&#12290;<\/p>\n<h3>&#28155;&#21152;&#21807;&#19968;&#32422;&#26463;<\/h3>\n<p>&#21807;&#19968;&#32422;&#26463;&#30830;&#20445;&#34920;&#20013;&#30340;&#27599;&#19968;&#34892;&#37117;&#20855;&#26377;&#21807;&#19968;&#30340;&#20540;&#12290;&#20320;&#21487;&#20197;&#20351;&#29992; <code>@Column<\/code> &#27880;&#35299;&#26469;&#25351;&#23450;&#21807;&#19968;&#32422;&#26463;&#12290;<\/p>\n<pre><code class=\"language-php\">use DoctrineORMMapping as ORM;\n\n\/**\n * @ORMEntity\n *\/\nclass User\n{\n    \/**\n     * @ORMId\n     * @ORMGeneratedValue(strategy=\"AUTO\")\n     * @ORMColumn(type=\"integer\")\n     *\/\n    private $id;\n\n    \/**\n     * @ORMColumn(type=\"string\", length=100, unique=true)\n     *\/\n    private $email;\n\n    \/\/ Getters and setters\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#20026; <code>email<\/code> &#23383;&#27573;&#28155;&#21152;&#20102;&#19968;&#20010;&#21807;&#19968;&#32422;&#26463;&#12290;<\/p>\n<h3>&#31034;&#20363;&#20195;&#30721;<\/h3>\n<p>&#20197;&#19979;&#26159;&#19968;&#20010;&#23436;&#25972;&#30340;&#31034;&#20363;&#65292;&#23637;&#31034;&#20102;&#22914;&#20309;&#22312;&#23454;&#20307;&#31867;&#20013;&#28155;&#21152;&#32034;&#24341;&#21644;&#21807;&#19968;&#32422;&#26463;&#65306;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace AppEntity;\n\nuse DoctrineORMMapping as ORM;\n\n\/**\n * @ORMEntity\n *\/\nclass User\n{\n    \/**\n     * @ORMId\n     * @ORMGeneratedValue(strategy=\"AUTO\")\n     * @ORMColumn(type=\"integer\")\n     *\/\n    private $id;\n\n    \/**\n     * @ORMColumn(type=\"string\", length=100, unique=true)\n     * @ORMIndex(name=\"idx_username\")\n     *\/\n    private $username;\n\n    \/**\n     * @ORMColumn(type=\"string\", length=255)\n     *\/\n    private $password;\n\n    \/\/ Getters and setters\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#31034;&#20363;&#20013;&#65292;&#25105;&#20204;&#21019;&#24314;&#20102;&#19968;&#20010; <code>User<\/code> &#23454;&#20307;&#31867;&#65292;&#24182;&#20026;&#20854;&#28155;&#21152;&#20102; <code>username<\/code> &#21644; <code>email<\/code> &#23383;&#27573;&#12290;<code>username<\/code> &#23383;&#27573;&#26377;&#19968;&#20010;&#21517;&#20026; <code>idx_username<\/code> &#30340;&#32034;&#24341;&#65292;&#32780; <code>email<\/code> &#23383;&#27573;&#26377;&#19968;&#20010;&#21807;&#19968;&#32422;&#26463;&#12290;<\/p>\n<p>&#36890;&#36807;&#36825;&#31181;&#26041;&#24335;&#65292;&#20320;&#21487;&#20197;&#22312; Doctrine &#20013;&#36731;&#26494;&#22320;&#28155;&#21152;&#32034;&#24341;&#21644;&#21807;&#19968;&#32422;&#26463;&#21040;&#20320;&#30340;&#23454;&#20307;&#31867;&#20013;&#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>Doctrine &#26159;&#19968;&#20010;&#24378;&#22823;&#30340; ORM&#65288;&#23545;&#35937;&#20851;&#31995;&#26144;&#23556;&#22120;&#65289;&#26694;&#26550;&#65292;&#36866;&#29992;&#20110; PHP &#24212;&#29992;&#31243;&#24207;&#65292;&#25552;&#20379;&#20102;&#23545;&#25968;&#25454;&#24211;&#25805;&#20316;&#30340;&#24378;&#22823;&#25903;&#25345;&#12290;&#26412;&#25945;&#31243;&#23558;&#25351;&#23548;&#24744;&#22914;&#20309;&#20351;&#29992; Doctrine &#22312;&#24744;&#30340;&#25968;&#25454;&#24211;&#26550;&#26500;&#20013;&#28155;&#21152;&#32034;&#24341;&#21644;&#21807;&#19968;&#32422;&#26463;&#65292;&#20174;&#32780;&#25552;&#39640;&#24212;&#29992;&#31243;&#24207;&#30340;&#24615;&#33021;&#24182;&#22686;&#24378;&#25968;&#25454;&#23436;&#25972;&#24615;&#12290;<\/p><p>&#21069;&#25552;&#26465;&#20214;&#65306;&#35201;&#36981;&#24490;&#26412;&#25945;&#31243;&#65292;&#35831;&#24744;&#20855;&#22791;&#22522;&#26412;&#30340;PHP&#30693;&#35782;&#21644;&#23545;Doctrine ORM&#30340;&#29702;&#35299;&#12290;&#27492;&#22806;&#65292;&#24744;&#36824;&#38656;&#35201;&#26377;&#19968;&#20010;&#24050;&#32463;&#35774;&#32622;&#22909;Doctrine&#30340;Symfony&#39033;&#30446;&#12290;<\/p><h2>&#29702;&#35299;&#32034;&#24341;&#21644;&#21807;&#19968;&#32422;&#26463;<\/h2><p>&#19968;&#20010;&#32034;&#24341;&#26159;&#19968;&#31181;&#24615;&#33021;&#20248;&#21270;&#21151;&#33021;&#65292;&#20351;&#25968;&#25454;&#24211;&#33021;&#22815;&#26356;&#24555;&#22320;&#25214;&#21040;&#21644;&#26816;&#32034;&#29305;&#23450;&#30340;&#34892;&#12290;&#23427;&#20204;&#29305;&#21035;&#36866;&#29992;&#20110;&#32463;&#24120;&#34987;&#25628;&#32034;&#25110;&#25490;&#24207;&#30340;&#21015;&#12290;&#21807;&#19968;&#32422;&#26463;&#31867;&#20284;&#20110;&#32034;&#24341;&#65292;&#20294;&#23427;&#20063;&#30830;&#20445;&#20102;&#25968;&#25454;&#24211;&#20013;&#30340;&#25152;&#26377;&#20540;&#65288;&#25110;&#32773;&#19968;&#32452;&#21015;&#65289;&#37117;&#26159;&#21807;&#19968;&#30340;&#12290;<\/p><h2>&#20351;&#29992;&#27880;&#35299;&#28155;&#21152;&#32034;&#24341;<\/h2><p>&#22312;Doctrine&#20013;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992;&#27880;&#35299;&#20026;&#23383;&#27573;&#28155;&#21152;&#32034;&#24341;&#12290;&#20197;&#19979;&#26159;&#22312;Entity&#31867;&#20013;&#36827;&#34892;&#27492;&#25805;&#20316;&#30340;&#19968;&#20010;&#31034;&#20363;&#65306;<\/p><pre><code>&lt;?php\nuse DoctrineORMMapping as ORM;\n\n\/**\n * @ORMEntity\n * @ORMTable(name=\"products\", indexes={@ORMIndex(columns={\"name\"})})\n *\/\nclass Product\n{\n    \/**\n     * @ORMColumn(type=\"string\")\n     * @ORMId\n     * @ORMGeneratedValue(strategy=\"AUTO\")\n     *\/\n    private $id;\n\n    \/**\n     * @ORMColumn(type=\"string\")\n     *\/\n    private $name;\n}\n<\/code><\/pre><p>&#36825;&#23558;&#20250;&#21019;&#24314;&#19968;&#20010;&#32034;&#24341;&#12290;<code>name<\/code>&#23545;&#19981;&#36215;&#65292;&#25105;&#19981;&#22826;&#26126;&#30333;&#24744;&#30340;&#24847;&#24605;&#65292;&#35831;&#24744;&#37325;&#26032;&#25551;&#36848;&#19968;&#19979;&#12290;<code>Product<\/code>&#24403;&#25968;&#25454;&#27169;&#22411;&#34987;&#26356;&#26032;&#26102;&#65292;entity&#65288;&#23454;&#20307;&#65289;&#30340;&#34892;&#20026;&#25110;&#29366;&#24577;&#20250;&#21457;&#29983;&#21464;&#21270;&#12290;<\/p><h2>&#23450;&#20041;&#21807;&#19968;&#32422;&#26463;<\/h2><p>&#20320;&#20063;&#21487;&#20197;&#36890;&#36807;&#27880;&#35299;&#23450;&#20041;&#21015;&#19978;&#30340;&#21807;&#19968;&#32422;&#26463;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#20026;&#34920;&#20013;&#30340;&#21015;&#25351;&#23450;&#21807;&#19968;&#32422;&#26463;&#30340;&#31034;&#20363;&#65306;<code>email<\/code>&#20027;&#39064;&#65306;<\/p><pre><code>&lt;?php\nuse DoctrineORMMapping as ORM;\n\n\/**\n * @ORMEntity\n * @ORMTable(name=\"users\", uniqueConstraints={@ORMUniqueConstraint(columns={\"email\"})})\n *\/\nclass User\n{\n    \/\/ ... Other user fields and methods ...\n\n    \/**\n     * @ORMColumn(type=\"string\")\n     *\/\n    private $email;\n}\n<\/code><\/pre><p>&#22312;&#36825;&#31181;&#37197;&#32622;&#19979;&#65292;Doctrine &#30830;&#20445;&#20102;&#25968;&#25454;&#27169;&#22411;&#19982;&#25968;&#25454;&#24211;&#34920;&#20043;&#38388;&#30340;&#26144;&#23556;&#20851;&#31995;&#12290;<code>email<\/code>&#30000;&#22320;<code>User<\/code>&#23454;&#20307;&#22312;&#20851;&#32852;&#30340;&#25968;&#25454;&#24211;&#34920;&#20013;&#30340;&#25152;&#26377;&#35760;&#24405;&#20043;&#38388;&#37117;&#26159;&#21807;&#19968;&#30340;&#12290;<\/p><h2>&#20351;&#29992;YAML&#28155;&#21152;&#32034;&#24341;&#21644;&#21807;&#19968;&#32422;&#26463;<\/h2><p>&#20320;&#21487;&#20197;&#20351;&#29992;YAML&#37197;&#32622;&#25991;&#20214;&#26469;&#23450;&#20041;&#32034;&#24341;&#21644;&#21807;&#19968;&#32422;&#26463;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#22312;YAML&#20013;&#20026;&#34920;&#25351;&#23450;&#32034;&#24341;&#21644;&#21807;&#19968;&#32422;&#26463;&#30340;&#31034;&#20363;&#65306;<\/p><pre><code>YourEntityName:\n  type: entity\n  table: your_table_name\n  indexes:\n    index_name:\n      columns: [column_name]\n  uniqueConstraints:\n    constraint_name:\n      columns: [unique_column_name]\n<\/code><\/pre><p>&#35831;&#30830;&#20445;&#26367;&#25442;<code>YourEntityName<\/code>&#22909;&#30340;&#65292;&#35831;&#21457;&#36865;&#20320;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<code>your_table_name<\/code>&#22909;&#30340;&#65292;&#35831;&#21457;&#36865;&#20320;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<code>index_name<\/code>&#22909;&#30340;&#65292;&#35831;&#25552;&#20379;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<code>column_name<\/code>&#22909;&#30340;&#65292;&#35831;&#21457;&#36865;&#20320;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<code>constraint_name<\/code>&#21644;&#20320;&#25171;&#25307;&#21628;&#12290;<code>unique_column_name<\/code>&#35831;&#25552;&#20379;&#20855;&#20307;&#30340;&#20869;&#23481;&#25110;&#19978;&#19979;&#25991;&#20197;&#20415;&#25105;&#36827;&#34892;&#32763;&#35793;&#12290;<\/p><h2>&#20351;&#29992;Schema&#24037;&#20855;&#12290;<\/h2><p>&#22312;&#23450;&#20041;&#32034;&#24341;&#21644;&#21807;&#19968;&#32422;&#26463;&#21518;&#65292;&#20351;&#29992;Doctrine&#30340;Schema&#24037;&#20855;&#26356;&#26032;&#25968;&#25454;&#24211;&#27169;&#24335;&#65306;<\/p><pre><code>php bin\/console doctrine:schema:update --force\n<\/code><\/pre><p>&#35813;&#21629;&#20196;&#23558;&#22312;&#24744;&#25551;&#36848;&#30340;&#23454;&#20307;&#31867;&#25110;YAML&#37197;&#32622;&#25991;&#20214;&#20013;&#30340;&#26144;&#23556;&#22522;&#30784;&#19978;&#24212;&#29992;&#20110;&#24744;&#30340;&#25968;&#25454;&#24211;&#26356;&#25913;&#12290;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>&#32034;&#24341;&#21644;&#21807;&#19968;&#32422;&#26463;&#23545;&#20110;&#20248;&#21270;&#25968;&#25454;&#24211;&#24615;&#33021;&#21644;&#30830;&#20445;&#25968;&#25454;&#23436;&#25972;&#24615;&#33267;&#20851;&#37325;&#35201;&#12290;Doctrine &#25552;&#20379;&#20102;&#30452;&#25509;&#28155;&#21152;&#36825;&#20123;&#32422;&#26463;&#30340;&#31616;&#21333;&#26426;&#21046;&#65292;&#36825;&#25277;&#35937;&#20102;&#35768;&#22810;&#36890;&#24120;&#38656;&#35201;&#25191;&#34892;&#30340;&#22797;&#26434; SQL &#20195;&#30721;&#12290;&#23427;&#30830;&#20445; PHP &#24212;&#29992;&#31243;&#24207;&#30340;&#25968;&#25454;&#22312;&#26597;&#35810;&#26102;&#39640;&#25928;&#19988;&#22312;&#24517;&#35201;&#26102;&#20445;&#25345;&#21807;&#19968;&#24615;&#12290;&#35831;&#22312;&#23558;&#20219;&#20309;&#26356;&#25913;&#24212;&#29992;&#20110;&#29983;&#20135;&#25968;&#25454;&#24211;&#20043;&#21069;&#65292;&#22312;&#24320;&#21457;&#29615;&#22659;&#20013;&#27979;&#35797;&#20219;&#20309;&#27169;&#24335;&#21464;&#21270;&#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 &#20013;&#28155;&#21152;&#32034;&#24341;&#21644;&#21807;&#19968;&#32422;&#26463;&#26159;&#25968;&#25454;&#24211;&#20248;&#21270;&#30340;&#37325;&#35201;&#37096;&#20998;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#22312; Doctrine &#20013;&#25191;&#34892;&#36825;&#20123;&#25805;&#20316;&#30340;&#35814;&#32454;&#27493;&#39588;&#65306;<\/p>\n<ol>\n<li>&#21019;&#24314;&#23454;&#20307;&#31867;&#65306;\n&#39318;&#20808;&#65292;&#25105;&#20204;&#38656;&#35201;&#21019;&#24314;&#19968;&#20010;&#23454;&#20307;&#31867;&#26469;&#34920;&#31034;&#25105;&#20204;&#30340;&#25968;&#25454;&#27169;&#22411;&#12290;&#20363;&#22914;&#65292;&#25105;&#20204;&#26377;&#19968;&#20010;&#21517;&#20026; <code>User<\/code> &#30340;&#23454;&#20307;&#31867;&#65292;&#23427;&#23558;&#23384;&#20648;&#29992;&#25143;&#30340;&#22995;&#21517;&#65288;<code>name<\/code>&#65289;&#12290;<\/li>\n<\/ol>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace AppEntity;\n\nuse DoctrineORMMapping as ORM;\nuse SymfonyComponentValidatorConstraints as Assert;\n\n\/**\n * @ORMEntity(repositoryClass=\"AppRepositoryUserRepository\")\n *\/\nclass User\n{\n    \/**\n     * @ORMId()\n     * @ORMGeneratedValue()\n     * @ORMColumn(type=\"integer\")\n     *\/\n    private $id;\n\n    \/**\n     * @ORMColumn(type=\"string\", length=255)\n     *\/\n    private $name;\n\n    public function getId(): ?int\n    {\n        return $this-&gt;id;\n    }\n\n    public function getName(): ?string\n    {\n        return $this-&gt;name;\n    }\n\n    public function setName(string $name): self\n    {\n        $this-&gt;name = $name;\n\n        return $this;\n    }\n}<\/code><\/pre>\n<ol start=\"2\">\n<li>&#28155;&#21152;&#32034;&#24341;&#65306;\n&#35201;&#20026;&#34920;&#20013;&#30340;&#26576;&#20123;&#23383;&#27573;&#28155;&#21152;&#32034;&#24341;&#65292;&#21487;&#20197;&#20351;&#29992; <code>@ORMIndex<\/code> &#27880;&#35299;&#12290;&#20363;&#22914;&#65292;&#22914;&#26524;&#25105;&#20204;&#35201;&#20026; <code>name<\/code> &#23383;&#27573;&#28155;&#21152;&#32034;&#24341;&#65292;&#21487;&#20197;&#36825;&#26679;&#20570;&#65306;<\/li>\n<\/ol>\n<pre><code class=\"language-php\">$user = new User();\n$user-&gt;setName('John Doe');\n$entityManager-&gt;persist($user);\n$entityManager-&gt;flush();\n\n\/\/ &#26816;&#26597;&#26159;&#21542;&#25104;&#21151;&#28155;&#21152;&#20102;&#32034;&#24341;\n$entityManager-&gt;createQuery('SELECT COUNT(u) FROM AppEntityUser u WHERE u.name = :name')\n    -&gt;setParameter('name', 'John Doe')\n    -&gt;getSingleScalarResult();\n\n\/\/ &#26816;&#26597;&#32034;&#24341;&#26159;&#21542;&#27491;&#30830;&#28155;&#21152;\n$indexManager = $entityManager-&gt;getIndexManager();\n$indexes = $indexManager-&gt;listIndexes($user);\n\nif ($indexes['name'] !== null) {\n    echo \"Index added successfully: \" . $indexes['name'];\n} else {\n    echo \"No index found for name\";\n}<\/code><\/pre>\n<ol start=\"3\">\n<li>&#28155;&#21152;&#21807;&#19968;&#32422;&#26463;&#65306;\n&#20026;&#20102;&#30830;&#20445;&#29992;&#25143;&#21517;&#22312;&#25968;&#25454;&#24211;&#20013;&#26159;&#21807;&#19968;&#30340;&#65292;&#21487;&#20197;&#20351;&#29992; <code>@ORMUniqueConstraint<\/code> &#27880;&#35299;&#12290;&#20363;&#22914;&#65292;&#25105;&#20204;&#21487;&#20197;&#30830;&#20445;&#29992;&#25143;&#21517;&#19981;&#37325;&#22797;&#65306;<\/li>\n<\/ol>\n<pre><code class=\"language-php\">$user = new User();\n$user-&gt;setName('John Doe');\n$entityManager-&gt;persist($user);\n$entityManager-&gt;flush();\n\n\/\/ &#26816;&#26597;&#26159;&#21542;&#25104;&#21151;&#28155;&#21152;&#20102;&#21807;&#19968;&#32422;&#26463;\n$entityManager-&gt;createQuery('SELECT COUNT(u) FROM AppEntityUser u WHERE u.name = :name')\n    -&gt;setParameter('name', 'John Doe')\n    -&gt;getSingleScalarResult();\n\n\/\/ &#26816;&#26597;&#21807;&#19968;&#32422;&#26463;&#26159;&#21542;&#27491;&#30830;&#28155;&#21152;\n$uniqueConstraintManager = $entityManager-&gt;getUniqueConstraintManager();\n$uniqueConstraints = $uniqueConstraintManager-&gt;listUniqueConstraints($user);\n\nif (count($uniqueConstraints) &gt; 0) {\n    echo \"Unique constraint added successfully: \" . implode(', ', array_keys($uniqueConstraints));\n} else {\n    echo \"No unique constraint found for user name\";\n}<\/code><\/pre>\n<ol start=\"4\">\n<li>&#27979;&#35797;&#21644;&#39564;&#35777;&#65306;\n&#36816;&#34892;&#20197;&#19978;&#20195;&#30721;&#21518;&#65292;&#20320;&#21487;&#20197;&#36890;&#36807;&#26816;&#26597;&#36820;&#22238;&#32467;&#26524;&#26469;&#30830;&#35748;&#32034;&#24341;&#21644;&#21807;&#19968;&#32422;&#26463;&#26159;&#21542;&#24050;&#27491;&#30830;&#28155;&#21152;&#21040;&#25968;&#25454;&#24211;&#20013;&#12290;&#36825;&#36890;&#24120;&#20250;&#36820;&#22238;&#24067;&#23572;&#20540;&#65292;&#34920;&#31034;&#26159;&#21542;&#25104;&#21151;&#28155;&#21152;&#20102;&#32034;&#24341;&#25110;&#21807;&#19968;&#32422;&#26463;&#12290;<\/li>\n<\/ol>\n<p>&#27880;&#24847;&#65306;&#22312;&#29983;&#20135;&#29615;&#22659;&#20013;&#65292;&#35831;&#21153;&#24517;&#20808;&#36827;&#34892;&#27979;&#35797;&#65292;&#20197;&#30830;&#20445;&#25152;&#26377;&#39044;&#26399;&#30340;&#21151;&#33021;&#37117;&#27491;&#24120;&#24037;&#20316;&#65292;&#24182;&#19988;&#19981;&#20250;&#23545;&#25968;&#25454;&#24211;&#24615;&#33021;&#36896;&#25104;&#36127;&#38754;&#24433;&#21709;&#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; Doctrine &#20013;&#65292;&#20320;&#21487;&#20197;&#36890;&#36807;&#37197;&#32622;&#23454;&#20307;&#31867;&#26469;&#28155;&#038;#..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[45],"tuisongtax":[],"class_list":["post-1122","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\/1122","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=1122"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=1122"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=1122"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=1122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}