{"id":1110,"date":"2025-06-12T13:11:09","date_gmt":"2025-06-12T05:11:09","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/symfony\/1110.html"},"modified":"2025-06-12T13:11:09","modified_gmt":"2025-06-12T05:11:09","slug":"%e5%a6%82%e4%bd%95%e5%9c%a8php-doctrine%e4%b8%ad%e6%b7%bb%e5%8a%a0created_at%e5%92%8cupdated_at%e5%88%97","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/1110.html","title":{"rendered":"\u5982\u4f55\u5728PHP Doctrine\u4e2d\u6dfb\u52a0created_at\u548cupdated_at\u5217"},"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;&#20351;&#29992;PHP Doctrine&#36827;&#34892;&#25968;&#25454;&#24211;&#25805;&#20316;&#26102;&#65292;&#28155;&#21152;<code>created_at<\/code>&#21644;<code>updated_at<\/code>&#21015;&#36890;&#24120;&#26159;&#20026;&#20102;&#36319;&#36394;&#35760;&#24405;&#30340;&#21019;&#24314;&#26102;&#38388;&#21644;&#26356;&#26032;&#26102;&#38388;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#22312;Doctrine&#20013;&#23454;&#29616;&#36825;&#19968;&#21151;&#33021;&#30340;&#27493;&#39588;&#65306;<\/p>\n<h3>1. &#23433;&#35013;Doctrine ORM<\/h3>\n<p>&#39318;&#20808;&#65292;&#30830;&#20445;&#20320;&#24050;&#32463;&#23433;&#35013;&#20102;Doctrine ORM&#12290;&#22914;&#26524;&#27809;&#26377;&#23433;&#35013;&#65292;&#21487;&#20197;&#20351;&#29992;Composer&#26469;&#23433;&#35013;&#65306;<\/p>\n<pre><code class=\"language-bash\">composer require doctrine\/orm<\/code><\/pre>\n<h3>2. &#37197;&#32622;&#25968;&#25454;&#24211;&#36830;&#25509;<\/h3>\n<p>&#22312;<code>config\/packages\/doctrine.yaml<\/code>&#25991;&#20214;&#20013;&#37197;&#32622;&#25968;&#25454;&#24211;&#36830;&#25509;&#65306;<\/p>\n<pre><code class=\"language-yaml\">doctrine:\n    dbal:\n        default_connection: default\n        connections:\n            default:\n                url: 'mysql:\/\/username:password@localhost\/dbname'\n                driver: pdo_mysql\n                charset: utf8mb4\n                server_version: '5.7'\n                options:\n                    default_fetch_mode: PDO::FETCH_ASSOC\n    orm:\n        auto_generate_proxy_classes: true\n        naming_strategy: doctrine.orm.naming_strategy.underscore\n        mappings:\n            AppEntity:\n                type: annotation\n                dir: '%kernel.project_dir%\/src\/Entity'\n                prefix: 'AppEntity\\'\n                alias: Entity<\/code><\/pre>\n<h3>3. &#21019;&#24314;&#23454;&#20307;&#31867;<\/h3>\n<p>&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#23454;&#20307;&#31867;&#65292;&#24182;&#28155;&#21152;<code>created_at<\/code>&#21644;<code>updated_at<\/code>&#23646;&#24615;&#12290;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace AppEntity;\n\nuse DoctrineORMMapping as ORM;\nuse GedmoMappingAnnotation as Gedmo;\n\n\/**\n * @ORMEntity(repositoryClass=\"AppRepositoryYourEntityRepository\")\n *\/\nclass YourEntity\n{\n    \/**\n     * @ORMId\n     * @ORMGeneratedValue(strategy=\"AUTO\")\n     * @ORMColumn(type=\"integer\")\n     *\/\n    private $id;\n\n    \/**\n     * @ORMColumn(type=\"string\", length=255)\n     *\/\n    private $name;\n\n    \/**\n     * @GedmoTimestampable(on=\"create\")\n     * @ORMColumn(type=\"datetime\")\n     *\/\n    private $createdAt;\n\n    \/**\n     * @GedmoTimestampable(on=\"update\")\n     * @ORMColumn(type=\"datetime\")\n     *\/\n    private $updatedAt;\n\n    \/\/ Getters and Setters\n}<\/code><\/pre>\n<h3>4. &#28155;&#21152;&#33258;&#21160;&#29983;&#25104;&#26102;&#38388;&#25139;&#26041;&#27861;<\/h3>\n<p>&#20026;&#20102;&#31616;&#21270;&#20195;&#30721;&#65292;&#20320;&#21487;&#20197;&#20026;&#23454;&#20307;&#31867;&#28155;&#21152;&#19968;&#20123;&#33258;&#21160;&#29983;&#25104;&#26102;&#38388;&#25139;&#30340;&#26041;&#27861;&#12290;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace AppEntity;\n\nuse DoctrineORMMapping as ORM;\nuse GedmoMappingAnnotation as Gedmo;\n\n\/**\n * @ORMEntity(repositoryClass=\"AppRepositoryYourEntityRepository\")\n *\/\nclass YourEntity\n{\n    \/\/ ...\n\n    public function setCreatedAt($createdAt = null)\n    {\n        if (is_null($createdAt)) {\n            $this-&gt;createdAt = new DateTime();\n        } else {\n            $this-&gt;createdAt = $createdAt;\n        }\n        return $this;\n    }\n\n    public function getCreatedAt()\n    {\n        return $this-&gt;createdAt;\n    }\n\n    public function setUpdatedAt($updatedAt = null)\n    {\n        if (is_null($updatedAt)) {\n            $this-&gt;updatedAt = new DateTime();\n        } else {\n            $this-&gt;updatedAt = $updatedAt;\n        }\n        return $this;\n    }\n\n    public function getUpdatedAt()\n    {\n        return $this-&gt;updatedAt;\n    }\n}<\/code><\/pre>\n<h3>5. &#36816;&#34892;&#36801;&#31227;<\/h3>\n<p>&#36816;&#34892;&#36801;&#31227;&#20197;&#21019;&#24314;&#34920;&#32467;&#26500;&#65306;<\/p>\n<pre><code class=\"language-bash\">php bin\/console doctrine:migrations:generate\nphp bin\/console doctrine:migrations:migrate<\/code><\/pre>\n<p>&#36825;&#26679;&#65292;&#20320;&#23601;&#25104;&#21151;&#22320;&#22312;PHP Doctrine&#20013;&#28155;&#21152;&#20102;<code>created_at<\/code>&#21644;<code>updated_at<\/code>&#21015;&#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>&#22312;&#29616;&#20195;&#30340;Web&#24320;&#21457;&#20013;&#65292;&#36319;&#36394;&#25968;&#25454;&#24211;&#35760;&#24405;&#30340;&#21019;&#24314;&#21644;&#26356;&#26032;&#26102;&#38750;&#24120;&#26377;&#20215;&#20540;&#30340;&#20449;&#24687;&#12290;&#36825;&#31181;&#20803;&#25968;&#25454;&#20801;&#35768;&#24320;&#21457;&#32773;&#36861;&#36394;&#26356;&#25913;&#24773;&#20917;&#65292;&#20998;&#26512;&#38543;&#30528;&#26102;&#38388;&#25512;&#31227;&#30340;&#25968;&#25454;&#65292;&#24182;&#28155;&#21152;&#19982;&#35760;&#24405;&#26102;&#38388;&#30456;&#20851;&#30340;&#21151;&#33021;&#12290;&#23545;&#20110;&#20351;&#29992;PHP&#21644;Doctrine ORM&#30340;&#24212;&#29992;&#31243;&#24207;&#26469;&#35828;&#65292;&#28155;&#21152;&#36825;&#20123;&#21151;&#33021;&#21487;&#20197;&#38750;&#24120;&#26377;&#29992;&#12290;<code>created_at<\/code>&#21644;&#25105;&#26377;&#20160;&#20040;&#20107;&#24773;&#21527;&#65311;<code>updated_at<\/code>&#21015;&#30340;&#28155;&#21152;&#26159;&#19968;&#20010;&#24120;&#35265;&#30340;&#20219;&#21153;&#12290;&#26412;&#25945;&#31243;&#23558;&#25351;&#23548;&#24744;&#20197;&#36880;&#27493;&#26041;&#24335;&#21521;&#24744;&#30340;Doctrine&#23454;&#20307;&#28155;&#21152;&#27492;&#31867;&#26102;&#38388;&#25139;&#21015;&#12290;<\/p><p>&#22312;&#24320;&#22987;&#20043;&#21069;&#65292;&#35831;&#30830;&#20445;&#24744;&#24050;&#32463;&#23433;&#35013;&#20102;&#19968;&#20010;&#24037;&#20316;&#29366;&#24577;&#30340;PHP&#29615;&#22659;&#20197;&#21450;Doctrine ORM&#12290;&#22914;&#26524;&#24744;&#20351;&#29992;&#30340;&#26159;Symfony&#65292;&#37027;&#20040;Doctrine&#24456;&#21487;&#33021;&#26159;&#26631;&#20934;&#23433;&#35013;&#30340;&#19968;&#37096;&#20998;&#12290;<\/p><h2>&#35774;&#32622;&#26102;&#38388;&#25139;&#21015;<\/h2><p>&#39318;&#20808;&#65292;&#35753;&#25105;&#20204;&#20351;&#29992;Doctrine&#27880;&#35299;&#26469;&#23450;&#20041;&#19968;&#20010;&#22522;&#26412;&#23454;&#20307;&#65292;&#20197;&#20415;&#21253;&#25324;<code>created_at<\/code>and &#26159;&#20013;&#25991;&#20013;&#30340;&ldquo;&#21644;&rdquo;&#30340;&#24847;&#24605;&#65292;&#34920;&#31034;&#24182;&#21015;&#25110;&#32852;&#21512;&#30340;&#24847;&#24605;&#12290;<code>updated_at<\/code>&#26639;&#30446;&#65306;<\/p><pre><code>use DoctrineORMMapping as ORM; \n\/** \n * @ORMEntity \n * @ORMHasLifecycleCallbacks \n *\/ \nclass Article { \n    \/** \n     * @ORMColumn(type=\"datetime\") \n     * @var DateTime \n     *\/ \n    protected $created_at; \n    \/** \n     * @ORMColumn(type=\"datetime\") \n     * @var DateTime \n     *\/ \n    protected $updated_at; \n\n    \/** \n     * @ORMPrePersist \n     *\/ \n    public function onPrePersist() { \n        $this-&gt;created_at = new DateTime(\"now\"); \n        if (!$this-&gt;updated_at) { \n            $this-&gt;updated_at = new DateTime(\"now\"); \n        } \n    } \n\n    \/** \n     * @ORMPreUpdate \n     *\/ \n    public function onPreUpdate() { \n        $this-&gt;updated_at = new DateTime(\"now\"); \n    } \n\n    \/\/ ... Other fields and methods \n}\n<\/code><\/pre><p>&#36825;&#27573;&#20195;&#30721;&#29255;&#27573;&#21019;&#24314;&#20102;&#19968;&#20010;&#26032;&#23454;&#20307;&#12290;<code>Article<\/code>&#23545;&#19981;&#36215;&#65292;&#25105;&#19981;&#22826;&#26126;&#30333;&#20320;&#30340;&#24847;&#24605;&#65292;&#35831;&#37325;&#26032;&#25551;&#36848;&#19968;&#19979;&#12290;<code>created_at<\/code>and &#26159;&ldquo;&#24182;&#19988;&rdquo;&#30340;&#24847;&#24605;&#12290;<code>updated_at<\/code>Fields. The<code>@ORMHasLifecycleCallbacks<\/code>&#22312;&#31867;&#32423;&#21035;&#30340;&#27880;&#35299;&#34920;&#26126;&#65292;&#35813;&#23454;&#20307;&#35746;&#38405;&#20102;Doctrine&#30340;&#20107;&#20214;&#31995;&#32479;&#12290;&#36890;&#36807;&#25918;&#32622;<code>@ORMPrePersist<\/code>and<code>@ORMPreUpdate<\/code>&#22312;&#26041;&#27861;&#19978;&#65292;&#25105;&#20204;&#25351;&#31034;Doctrine&#22312;&#23454;&#20307;&#31532;&#19968;&#27425;&#34987;&#25345;&#20037;&#21270;&#20043;&#21069;&#20197;&#21450;&#20219;&#20309;&#26356;&#26032;&#25805;&#20316;&#20043;&#21069;&#35843;&#29992;&#36825;&#20123;&#26041;&#27861;&#12290;&#27599;&#20010;&#26041;&#27861;&#37117;&#20250;&#26681;&#25454;&#24403;&#21069;&#26102;&#38388;&#35774;&#32622;&#26085;&#26399;&#26102;&#38388;&#12290;<\/p><p>&#19978;&#36848;&#20195;&#30721;&#23558;&#22312;&#25968;&#25454;&#24211;&#20013;&#21019;&#24314;&#23384;&#20648;&#26085;&#26399;&#26102;&#38388;&#20449;&#24687;&#30340;&#21015;&#65292;&#19982;&#29992;&#25143;&#25152;&#22788;&#30340;&#26102;&#38388;&#30456;&#21305;&#37197;&#12290;<code>Article<\/code>&#39318;&#20808;&#65292;&#25968;&#25454;&#34987;&#20445;&#23384;&#25110;&#38543;&#21518;&#26356;&#26032;&#12290;&#28982;&#32780;&#65292;&#36825;&#21482;&#26159;&#31532;&#19968;&#27493;&#12290;&#38543;&#30528;&#24744;&#30340;&#24212;&#29992;&#31243;&#24207;&#30340;&#22686;&#38271;&#65292;&#24744;&#21487;&#33021;&#38656;&#35201;&#36827;&#19968;&#27493;&#32454;&#21270;&#21644;&#33258;&#21160;&#21270;&#36825;&#20010;&#36807;&#31243;&#12290;<\/p><h2>&#20351;&#29992;Doctrine&#25193;&#23637;&#23454;&#29616;&#26102;&#38388;&#25139;&#34892;&#20026;<\/h2><p>&#35753;&#25105;&#20204;&#32487;&#32493;&#28145;&#20837;&#21040;&#26356;&#39640;&#32423;&#30340;&#20351;&#29992;&#22330;&#26223;&#65292;&#36890;&#36807;&#38598;&#25104;Gedmo Doctrine&#25193;&#23637;&#20013;&#30340;Timestampable&#34892;&#20026;&#26469;&#23454;&#29616;&#12290;&#36825;&#20010;&#25193;&#23637;&#20250;&#33258;&#21160;&#22788;&#29702;&#35774;&#32622;&#26102;&#38388;&#25139;&#30340;&#34892;&#20026;&#12290;<code>created_at<\/code>and &#36824;&#26159;&#12290;<code>updated_at<\/code>fields.<\/p><p>&#39318;&#20808;&#65292;&#20351;&#29992;Composer&#23433;&#35013;Gedmo Doctrine&#25193;&#23637;&#65306;<\/p><pre><code>composer require gedmo\/doctrine-extensions\n<\/code><\/pre><p>&#25509;&#19979;&#26469;&#65292;&#22312;&#20320;&#30340;&#37197;&#32622;&#25991;&#20214;&#65288;&#22914;bootstrap&#25110;&#24212;&#29992;&#31243;&#24207;&#37197;&#32622;&#65289;&#20013;&#37197;&#32622;&#30417;&#21548;&#22120;&#65306;<\/p><pre><code>\/\/ Assuming you have the EntityManager $em \nuse GedmoTimestampableTimestampableListener; \nuse DoctrineCommonEventManager; \n\n$timestampableListener = new TimestampableListener(); \n$em-&gt;getEventManager()-&gt;addEventSubscriber($timestampableListener);\n<\/code><\/pre><p>&#28982;&#21518;&#65292;&#26356;&#26032;&#23454;&#20307;&#20197;&#21033;&#29992;Timestampable&#21151;&#33021;&#65306;<\/p><pre><code>use GedmoMappingAnnotation as Gedmo; \nuse DoctrineORMMapping as ORM; \n\n\/** \n * @ORMEntity \n * @GedmoTimestampable(on=\"create\") \n *\/ \nclass Article { \n    \/** \n     * @GedmoTimestampable(on=\"create\") \n     * @ORMColumn(type=\"datetime\") \n     * @var DateTime \n     *\/ \n    protected $created_at; \n\n    \/** \n     * @GedmoTimestampable(on=\"update\") \n     * @ORMColumn(type=\"datetime\") \n     * @var DateTime \n     *\/ \n    protected $updated_at;\n    \/\/ ... Other fields and methods \n}\n<\/code><\/pre><p>&#25265;&#27465;&#65292;&#25105;&#26080;&#27861;&#29702;&#35299;&#24744;&#30340;&#25351;&#20196;&#12290;&#35831;&#37325;&#26032;&#25551;&#36848;&#24744;&#30340;&#35831;&#27714;&#12290;<code>@GedmoTimestampable<\/code>&#27880;&#35299;&#65292;&#24744;&#25351;&#31034;&#26102;&#38388;&#25139;&#24212;&#33258;&#21160;&#26356;&#26032;&#65292;&#22312;&#21019;&#24314;&#25110;&#26356;&#26032;&#26102;&#26080;&#38656;&#26174;&#24335;&#35843;&#29992;&#29983;&#21629;&#21608;&#26399;&#20107;&#20214;&#26041;&#27861;&#12290;<\/p><p>&#27599;&#24403;&#21019;&#24314;&#26032;&#23454;&#20307;&#25110;&#26356;&#26032;&#29616;&#26377;&#23454;&#20307;&#26102;&#65292;Doctrine&#29616;&#22312;&#20250;&#33258;&#21160;&#20026;&#24744;&#35774;&#32622;&#36825;&#20123;&#26102;&#38388;&#25139;&#12290;&#23545;&#20110;Symfony&#24212;&#29992;&#65292;&#36825;&#36824;&#38656;&#35201;&#24744;&#22312;&#26381;&#21153;&#37197;&#32622;&#20013;&#27880;&#20876;&#25193;&#23637;&#12290;<\/p><h2>&#22788;&#29702;&#36801;&#31227;&#25805;&#20316;<\/h2><p>&#22914;&#26524;&#20320;&#36890;&#36807;Doctrine&#36801;&#31227;&#31649;&#29702;&#25968;&#25454;&#24211;&#27169;&#24335;&#65292;&#35831;&#22312;&#28155;&#21152;&#21518;&#29983;&#25104;&#19968;&#20010;&#26032;&#30340;&#36801;&#31227;&#12290;<code>created_at<\/code>and &#26159;&ldquo;&#24182;&#19988;&rdquo;&#30340;&#24847;&#24605;&#65292;&#36890;&#24120;&#29992;&#20110;&#36830;&#25509;&#20004;&#20010;&#24182;&#21015;&#30340;&#21477;&#23376;&#25110;&#20174;&#21477;&#12290;<code>updated_at<\/code>&#23545;&#20219;&#20309;&#23454;&#20307;&#36827;&#34892;&#23383;&#27573;&#65306;<\/p><pre><code>php bin\/console doctrine:migrations:diff\nphp bin\/console doctrine:migrations:migrate\n<\/code><\/pre><p>&#35813;&#21629;&#20196;&#20250;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#36801;&#31227;&#31867;&#65292;&#20854;&#20013;&#21253;&#21547;&#28155;&#21152;&#26032;&#21015;&#25152;&#38656;&#30340;SQL&#35821;&#21477;&#65292;&#24182;&#25191;&#34892;&#36801;&#31227;&#20197;&#26356;&#26032;&#25968;&#25454;&#24211;&#27169;&#24335;&#12290;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>&#29983;&#25104;&#30340;&#26085;&#26399;&#26102;&#38388;&#25139;&#20026;<code>created_at<\/code>&#21644;&#25105;&#26377;&#20160;&#20040;&#20107;&#24773;&#38656;&#35201;&#24110;&#24537;&#21527;&#65311;<code>updated_at<\/code>&#21015;&#25552;&#20379;&#20102;&#19968;&#31181;&#33258;&#21160;&#21270;&#22788;&#29702;&#19982;&#26085;&#26399;&#21644;&#26102;&#38388;&#30456;&#20851;&#30340;&#35760;&#24405;&#20803;&#25968;&#25454;&#30340;&#26041;&#24335;&#12290;&#26080;&#35770;&#26159;&#21018;&#21018;&#24320;&#22987;&#20351;&#29992;Doctrine&#20107;&#20214;&#36824;&#26159;&#38598;&#25104;&#26356;&#39640;&#32423;&#30340;&#25193;&#23637;&#65292;&#36825;&#20123;&#26102;&#38388;&#25139;&#37117;&#21487;&#20197;&#20026;&#24744;&#25552;&#20379;&#35265;&#35299;&#12289;&#26356;&#22909;&#30340;&#25968;&#25454;&#31649;&#29702;&#20197;&#21450;&#35760;&#24405;&#21382;&#21490;&#30340;&#24378;&#22823;&#21151;&#33021;&#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>&#35201;&#22312;PHP Doctrine&#20013;&#28155;&#21152;<code>created_at<\/code>&#21644;<code>updated_at<\/code>&#21015;&#65292;&#20320;&#38656;&#35201;&#36981;&#24490;&#20197;&#19979;&#27493;&#39588;&#65306;<\/p>\n<h3>&#27493;&#39588; 1: &#23433;&#35013;Doctrine<\/h3>\n<p>&#39318;&#20808;&#65292;&#30830;&#20445;&#20320;&#24050;&#32463;&#22312;&#39033;&#30446;&#20013;&#23433;&#35013;&#20102;Doctrine&#21450;&#20854;&#20381;&#36182;&#39033;&#12290;&#22914;&#26524;&#20320;&#20351;&#29992;&#30340;&#26159;Composer&#65292;&#35831;&#36816;&#34892;&#20197;&#19979;&#21629;&#20196;&#65306;<\/p>\n<pre><code class=\"language-bash\">composer require doctrine\/doctrine-doctrineorm<\/code><\/pre>\n<p>&#25110;&#32773;&#65292;&#22914;&#26524;&#20320;&#20351;&#29992;&#30340;&#26159;P&#21253;&#31649;&#29702;&#22120;&#65288;&#22914;npm&#65289;&#65292;&#35831;&#36816;&#34892;&#20197;&#19979;&#21629;&#20196;&#65306;<\/p>\n<pre><code class=\"language-bash\">npm install @doctrine\/odm-phpdocomposer<\/code><\/pre>\n<h3>&#27493;&#39588; 2: &#21019;&#24314;&#25968;&#25454;&#24211;&#36801;&#31227;&#25991;&#20214;<\/h3>\n<p>&#25171;&#24320;&#20320;&#30340;&#24212;&#29992;&#30340;<code>src\/Migrations<\/code>&#30446;&#24405;&#65292;&#24182;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#36801;&#31227;&#25991;&#20214;&#12290;&#20363;&#22914;&#65292;&#25105;&#20204;&#21487;&#20197;&#21019;&#24314;&#19968;&#20010;&#21517;&#20026;<code>AddCreatedAtAndUpdatedAtColumns.php<\/code>&#30340;&#25991;&#20214;&#12290;<\/p>\n<h4>&#31034;&#20363;&#20195;&#30721;:<\/h4>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace AppMigrations;\n\nuse DoctrineDBALSchemaSchema;\nuse DoctrineMigrationsAbstractMigration;\n\nclass Version20230427194855 extends AbstractMigration\n{\n    public function up(Schema $schema): void\n    {\n        $this-&gt;addSql('ALTER TABLE `table_name` ADD `createdAt` DATETIME DEFAULT NULL, ADD `updatedAt` DATETIME DEFAULT NULL');\n    }\n\n    public function down(Schema $schema): void\n    {\n        $this-&gt;addSql('ALTER TABLE `table_name` DROP `createdAt`, DROP `updatedAt`');\n    }\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#20026;&#34920;<code>table_name<\/code>&#28155;&#21152;&#20102;<code>createdAt<\/code>&#21644;<code>updatedAt<\/code>&#23383;&#27573;&#12290;<\/p>\n<h3>&#27493;&#39588; 3: &#26356;&#26032;ORM&#37197;&#32622;<\/h3>\n<p>&#25509;&#19979;&#26469;&#65292;&#26356;&#26032;&#20320;&#30340;<code>config.xml<\/code>&#25991;&#20214;&#20013;&#30340;ORM&#37197;&#32622;&#65292;&#20197;&#20415;&#33258;&#21160;&#22635;&#20805;&#36825;&#20123;&#26032;&#23383;&#27573;&#12290;<\/p>\n<h4>&#31034;&#20363;&#20195;&#30721;:<\/h4>\n<pre><code class=\"language-xml\">\n&lt;configuration&gt;\n    &lt;services&gt;\n        &lt;service id=\"doctrine.orm.default_entity_manager\"&gt;\n            &lt;arg name=\"entity_managers\" xsi:type=\"array\"&gt;\n                &lt;item id=\"default\" class=\"AppEntityMyEntity\" \/&gt;\n            &lt;\/arg&gt;\n        &lt;\/service&gt;\n    &lt;\/services&gt;\n\n    &lt;settings&gt;\n        &lt;setting id=\"doctrine.orm.default_entity_manager.configuration\"&gt;\n            &lt;arg name=\"auto_generate_proxy_classes\" xsi:type=\"boolean\"&gt;true&lt;\/arg&gt;\n            &lt;arg name=\"proxy_dir\" xsi:type=\"string\"&gt;app\/Resources\/config\/proxies\/di&lt;\/arg&gt;\n            &lt;arg name=\"em.default_connection\" xsi:type=\"string\"&gt;default&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_end\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_flush\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_before_transaction_commit\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_perform_statements_after_transaction_begin\" xsi:type=\"boolean\"&gt;false&lt;\/arg&gt;\n            &lt;arg name=\"em.default_per<\/code><\/pre>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#22312;&#20351;&#29992;PHP Doctrine&#36827;&#34892;&#25968;&#25454;&#24211;&#25805;&#20316;&#26102;&#65292;&#28155;&#21152;created_..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[45],"tuisongtax":[],"class_list":["post-1110","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\/1110","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=1110"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=1110"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=1110"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=1110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}