{"id":872,"date":"2025-06-12T01:40:06","date_gmt":"2025-06-11T17:40:06","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/872.html"},"modified":"2025-06-12T01:40:06","modified_gmt":"2025-06-11T17:40:06","slug":"eloquent%ef%bc%9a%e5%a6%82%e4%bd%95%e8%87%aa%e5%8a%a8%e5%88%a0%e9%99%a4n%e5%a4%a9%e5%90%8e%e7%9a%84%e6%97%a7%e8%ae%b0%e5%bd%95","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/872.html","title":{"rendered":"Eloquent\uff1a\u5982\u4f55\u81ea\u52a8\u5220\u9664N\u5929\u540e\u7684\u65e7\u8bb0\u5f55"},"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>Eloquent &#26159; Laravel &#26694;&#26550;&#20013;&#30340;&#19968;&#20010;&#24378;&#22823; ORM&#65288;&#23545;&#35937;&#20851;&#31995;&#26144;&#23556;&#65289;&#65292;&#23427;&#31616;&#21270;&#20102;&#19982;&#25968;&#25454;&#24211;&#30340;&#20132;&#20114;&#12290;&#35201;&#23454;&#29616;&#33258;&#21160;&#21024;&#38500; N &#22825;&#21518;&#30340;&#26087;&#35760;&#24405;&#65292;&#21487;&#20197;&#36890;&#36807;&#20197;&#19979;&#27493;&#39588;&#26469;&#23436;&#25104;&#65306;<\/p>\n<ol>\n<li>\n<p><strong>&#23450;&#20041;&#27169;&#22411;<\/strong>&#65306;\n&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#21019;&#24314;&#19968;&#20010; Eloquent &#27169;&#22411;&#26469;&#20195;&#34920;&#20320;&#35201;&#25805;&#20316;&#30340;&#25968;&#25454;&#34920;&#12290;<\/p>\n<pre><code class=\"language-php\">\/\/ app\/Models\/Record.php\n\nnamespace AppModels;\n\nuse IlluminateDatabaseEloquentModel;\nuse CarbonCarbon;\n\nclass Record extends Model\n{\n   protected $fillable = ['name', 'created_at'];\n\n   public function deleteOldRecords($days)\n   {\n       $thresholdDate = Carbon::now()-&gt;subDays($days);\n       return $this-&gt;where('created_at', '&lt;=', $thresholdDate)-&gt;delete();\n   }\n}<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#20351;&#29992;&#27169;&#22411;&#26041;&#27861;<\/strong>&#65306;\n&#22312;&#20320;&#30340;&#25511;&#21046;&#22120;&#25110;&#20854;&#20182;&#22320;&#26041;&#65292;&#20320;&#21487;&#20197;&#35843;&#29992; <code>deleteOldRecords<\/code> &#26041;&#27861;&#26469;&#21024;&#38500; N &#22825;&#21069;&#30340;&#26087;&#35760;&#24405;&#12290;<\/p>\n<pre><code class=\"language-php\">\/\/ app\/Http\/Controllers\/RecordController.php\n\nnamespace AppHttpControllers;\n\nuse AppModelsRecord;\nuse IlluminateHttpRequest;\n\nclass RecordController extends Controller\n{\n   public function deleteOldRecords(Request $request)\n   {\n       $days = $request-&gt;input('days');\n       if ($days) {\n           $result = Record::deleteOldRecords($days);\n           if ($result) {\n               return response()-&gt;json(['message' =&gt; 'Old records deleted successfully'], 200);\n           } else {\n               return response()-&gt;json(['error' =&gt; 'Failed to delete old records'], 500);\n           }\n       } else {\n           return response()-&gt;json(['error' =&gt; 'Missing days parameter'], 400);\n       }\n   }\n}<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#36335;&#30001;&#37197;&#32622;<\/strong>&#65306;\n&#30830;&#20445;&#20320;&#22312;&#36335;&#30001;&#25991;&#20214;&#20013;&#37197;&#32622;&#20102;&#30456;&#24212;&#30340;&#36335;&#30001;&#12290;<\/p>\n<pre><code class=\"language-php\">\/\/ routes\/web.php\n\nuse AppHttpControllersRecordController;\n\nRoute::post('\/delete-records', [RecordController::class, 'deleteOldRecords']);<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#31034;&#20363;&#35831;&#27714;<\/strong>&#65306;\n&#20351;&#29992; Postman &#25110;&#20854;&#20182; HTTP &#23458;&#25143;&#31471;&#21457;&#36865; POST &#35831;&#27714;&#21040; <code>\/delete-records<\/code> &#36335;&#30001;&#65292;&#24182;&#20256;&#36882; N &#22825;&#25968;&#20316;&#20026;&#21442;&#25968;&#12290;<\/p>\n<pre><code class=\"language-bash\">curl -X POST http:\/\/localhost:8000\/delete-records -H \"Content-Type: application\/json\" -d '{\"days\": 7}'<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>&#36890;&#36807;&#20197;&#19978;&#27493;&#39588;&#65292;&#20320;&#23601;&#21487;&#20197;&#23454;&#29616;&#33258;&#21160;&#21024;&#38500; N &#22825;&#21518;&#30340;&#26087;&#35760;&#24405;&#30340;&#21151;&#33021;&#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;&#24320;&#21457;&#24212;&#29992;&#31243;&#24207;&#26102;&#65292;&#33258;&#21160;&#21024;&#38500;&#26087;&#35760;&#24405;&#20197;&#20445;&#25345;&#25968;&#25454;&#24211;&#25972;&#27905;&#26159;&#19968;&#39033;&#24120;&#35265;&#30340;&#38656;&#27714;&#12290;&#26412;&#25945;&#31243;&#23558;&#25506;&#35752;&#22914;&#20309;&#20351;&#29992;Laravel&#30340;ORM&#65288;&#23545;&#35937;&#20851;&#31995;&#26144;&#23556;&#65289;&#21644;Eloquent&#35774;&#32622;&#19968;&#20010;&#33258;&#21160;&#21024;&#38500;&#26426;&#21046;&#65292;&#20197;&#20415;&#22312;&#19968;&#23450;&#22825;&#25968;&#21518;&#21024;&#38500;&#35760;&#24405;&#12290;<\/p><h2>&#29702;&#35299;&#26446;&#22885;&#26222;&#25289;&#26031;&#20462;&#21098;<\/h2><p>Laravel&#30340;&#20869;&#32622;ORM&#31216;&#20026;eloquent&#65292;&#23427;&#25552;&#20379;&#20102;&#19968;&#20010;&#34920;&#31034;&#25968;&#25454;&#24211;&#34920;&#30340;eloquent&#27169;&#22411;&#12290;&#22312;Laravel 8.x&#21450;&#26356;&#39640;&#29256;&#26412;&#20013;&#24341;&#20837;&#20102;&#21517;&#20026;&#27169;&#22411;&#20462;&#21098;&#30340;&#26032;&#29305;&#24615;&#65292;&#36825;&#26377;&#21161;&#20110;&#35299;&#20915;&#36825;&#31181;&#22330;&#26223;&#12290;<\/p><h3>&#33258;&#21160;&#20462;&#21098;&#65306;&#22522;&#30784;&#30693;&#35782;<\/h3><p>&#20026;&#20102;&#21033;&#29992;&#36825;&#19968;&#21151;&#33021;&#65292;&#24744;&#30340;&#27169;&#22411;&#38656;&#35201;&#20351;&#29992;&#23427;&#12290;<code>IlluminateDatabaseEloquentPrunable<\/code>&#29305;&#24615;&#12290;&#36825;&#20010;&#29305;&#24615;&#25552;&#20379;&#20102;&#20320;&#38656;&#35201;&#35206;&#30422;&#30340;&#26041;&#27861;&#65292;&#20197;&#20415;&#23450;&#20041;&#35760;&#24405;&#20309;&#26102;&#34987;&#35748;&#20026;&#26159;&#36807;&#26102;&#24182;&#34987;&#28165;&#38500;&#12290;<\/p><pre><code>namespace AppModels;\n\nuse IlluminateDatabaseEloquentModel;\nuse IlluminateDatabaseEloquentPrunable;\n\nclass YourModel extends Model\n{\n    use Prunable;\n\n    protected function pruning() {\n        return $this-&gt;where('created_at', '&lt;=', now()-&gt;subDays(30));\n    }\n}\n<\/code><\/pre><p>&#20363;&#22914;&#65292;&#36825;&#37324;&#20316;&#20026;&#20363;&#23376;&#65292;<code>pruning<\/code>&#26041;&#27861;&#23450;&#20041;&#20026;&#33258;&#21160;&#21024;&#38500;&#36229;&#36807;30&#22825;&#30340;&#35760;&#24405;&#12290;&#35813;&#26041;&#27861;&#20351;&#29992;&#20102;Carbon&#24211;&#12290;<code>subDays<\/code>&#35745;&#31639;&#26085;&#26399;&#21644;&#26102;&#38388;&#30340;&#12290;<code>where<\/code>&#36807;&#28388;&#35760;&#24405;&#30340;&#26465;&#30446;&#22768;&#26126;&#12290;<\/p><h2>&#35774;&#32622;&#23450;&#26102;&#20462;&#21098;<\/h2><p>&#20026;&#20102;&#33258;&#21160;&#35302;&#21457;&#20462;&#21098;&#36807;&#31243;&#65292;&#20320;&#38656;&#35201;&#22312;Laravel&#20013;&#35774;&#32622;&#19968;&#20010;&#35843;&#24230;&#22120;&#26469;&#36816;&#34892;&#36825;&#20010;&#36807;&#31243;&#12290;<code>prune<\/code>&#21629;&#20196;&#12290;<\/p><pre><code>\/\/ AppConsoleKernel.php\n\nprotected function schedule(Schedule $schedule)\n{\n    $schedule-&gt;command('model:prune', [\n        '--model' =&gt; [YourModel::class],\n    ])-&gt;daily();\n}\n<\/code><\/pre><p>&#36825;&#23558;&#23433;&#25490;&#20462;&#21098;&#36807;&#31243;&#27599;&#22825;&#36827;&#34892;&#12290;&#20294;&#26159;&#65292;&#21487;&#20197;&#26681;&#25454;&#38656;&#35201;&#36890;&#36807;&#20351;&#29992;&#22914;&#35843;&#25972;&#39057;&#29575;&#31561;&#26041;&#27861;&#26469;&#20462;&#25913;&#27492;&#35774;&#32622;&#12290;<code>hourly<\/code>&#22909;&#30340;&#65292;&#35831;&#21457;&#36865;&#20320;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<code>weekly<\/code>&#31561;&#31561;&#12290;<\/p><h2>&#33258;&#21160;&#21270;&#23450;&#26102;&#20219;&#21153;<\/h2><p>&#22312;&#23450;&#20041;&#20102;&#26102;&#38388;&#34920;&#21518;&#65292;&#35831;&#21035;&#24536;&#20102;&#22312;&#26381;&#21153;&#22120;&#19978;&#35774;&#32622;&#20219;&#21153;&#35843;&#24230;&#22120;&#30340;cron&#26465;&#30446;&#20197;&#36816;&#34892;Laravel&#35843;&#24230;&#22120;&#12290;<\/p><pre><code>* * * * * cd \/path-to-your-project &amp;&amp; php artisan schedule:run &gt;&gt; \/dev\/null 2&gt;&amp;1\n<\/code><\/pre><p>&#23427;&#23558;&#36816;&#34892;&#12290;<code>schedule:run<\/code>&#27599;&#20998;&#38047;&#26816;&#26597;&#26159;&#21542;&#26377;&#20219;&#20309;&#39044;&#23450;&#21629;&#20196;&#21040;&#26399;&#12290;<\/p><h2>&#39640;&#32423;&#20462;&#21098;&#26465;&#20214;<\/h2><p>&#22312;&#22522;&#26412;&#29992;&#36884;&#20043;&#22806;&#65292;&#24744;&#21487;&#33021;&#38656;&#35201;&#25193;&#23637;&#36923;&#36753;&#20197;&#22788;&#29702;&#26356;&#22797;&#26434;&#30340;&#22330;&#26223;&#65292;&#20363;&#22914;&#36719;&#21024;&#38500;&#35760;&#24405;&#12290;&#26681;&#25454;&#24744;&#30340;&#24212;&#29992;&#31243;&#24207;&#36923;&#36753;&#65292;&#21487;&#20197;&#22312;&#26597;&#35810;&#20869;&#37096;&#36827;&#34892;&#32454;&#21270;&#35843;&#25972;&#12290;<code>pruning<\/code>&#32487;&#32493;&#20351;&#29992;&#26041;&#27861;&#12290;<\/p><pre><code>\/\/ If you're using SoftDeletes and want to prune soft deleted records...\nprotected function pruning() {\n    return $this-&gt;onlyTrashed()-&gt;where('deleted_at', '&lt;=', now()-&gt;subDays(30));\n}\n<\/code><\/pre><h2>&#25163;&#21160;&#35302;&#21457;&#20462;&#21098;<\/h2><p>&#22312;&#24320;&#21457;&#25110;&#20854;&#20182;&#25805;&#20316;&#26399;&#38388;&#65292;&#25163;&#21160;&#21551;&#21160;&#36807;&#31243;&#20063;&#26159;&#24517;&#35201;&#30340;&#65292;&#22240;&#20026;&#34429;&#28982;&#25209;&#37327;&#20462;&#21098;&#21487;&#33021;&#39640;&#25928;&#65292;&#20294;&#24744;&#20063;&#21487;&#33021;&#38656;&#35201;&#25163;&#21160;&#25191;&#34892;&#27492;&#36807;&#31243;&#12290;<\/p><pre><code>php artisan model:prune --model=AppModelsYourModel\n<\/code><\/pre><p>&#23436;&#25104;&#20462;&#21098;&#21518;&#65292;&#24744;&#20250;&#30475;&#21040;&#30830;&#35748;&#20449;&#24687;&#12290;<\/p><h2>&#22788;&#29702;&#20462;&#21098;&#20107;&#20214;<\/h2><p>Laravel &#22312;&#20462;&#21098;&#20043;&#21069;&#21644;&#20043;&#21518;&#20250;&#35302;&#21457;&#20107;&#20214;&#65306;<code>eloquent.prune: *your model class*<\/code>and &#26159;&#20013;&#25991;&#20013;&#30340;&ldquo;&#24182;&#19988;&rdquo;&#30340;&#24847;&#24605;&#12290;<code>eloquent.pruned: *your model class*<\/code>&#22312;&#24744;&#30340;&#24212;&#29992;&#31243;&#24207;&#20013;&#65292;&#24744;&#21487;&#20197;&#30417;&#21548;&#20197;&#19979;&#20869;&#23481;&#65306;<\/p><pre><code>Event::listen('eloquent.prune: AppModelsYourModel', function ($model) {\n    \/\/ Do stuff before pruning\n});\nEvent::listen('eloquent.pruned: AppModelsYourModel', function ($model) {\n    \/\/ Do stuff after pruning\n});\n<\/code><\/pre><h2>&#23450;&#21046;&#20462;&#21098;&#36923;&#36753;<\/h2><p>&#20063;&#35768;&#20320;&#38656;&#35201;&#22312;&#20462;&#21098;&#21457;&#29983;&#26102;&#37319;&#21462;&#20854;&#20182;&#34892;&#21160;&#25110;&#35843;&#25972;&#36923;&#36753;&#65307;&#20320;&#21487;&#20197;&#35206;&#30422;&#36825;&#20123;&#34892;&#20026;&#12290;<code>pruneAll<\/code>&#26041;&#27861;&#26469;&#23436;&#20840;&#23450;&#21046;&#34892;&#20026;&#12290;<\/p><pre><code>protected function pruneAll()\n{\n    \/\/ Your custom logic for pruning.\n}\n<\/code><\/pre><h2>&#32771;&#34385;&#20462;&#21098;&#31574;&#30053;&#26102;&#24212;&#32771;&#34385;&#20197;&#19979;&#22240;&#32032;&#65306;1. &#29615;&#22659;&#26465;&#20214;&#65292;&#21253;&#25324;&#20809;&#29031;&#12289;&#28287;&#24230;&#21644;&#28201;&#24230;&#31561;&#65307;2. &#26893;&#29289;&#30340;&#29983;&#38271;&#20064;&#24615;&#65307;3. &#39044;&#26399;&#30340;&#24320;&#33457;&#32467;&#26524;&#24773;&#20917;&#12290;<\/h2><p>&#22312;&#23454;&#26045;&#21098;&#26525;&#20043;&#21069;&#65292;&#32771;&#34385;&#34920;&#30340;&#22823;&#23567;&#12289;&#21098;&#26525;&#39057;&#29575;&#20197;&#21450;&#19994;&#21153;&#36923;&#36753;&#65292;&#20197;&#30830;&#20445;&#24212;&#29992;&#30340;&#31283;&#23450;&#24615;&#21644;&#24615;&#33021;&#19981;&#21463;&#24433;&#21709;&#12290;&#23450;&#26399;&#22791;&#20221;&#25968;&#25454;&#24211;&#65292;&#20197;&#38450;&#24847;&#22806;&#25968;&#25454;&#20002;&#22833;&#12290;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>&#22312;&#26412;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#24050;&#32463;&#20171;&#32461;&#20102;&#22914;&#20309;&#36890;&#36807;&#33258;&#21160;&#21024;&#38500;&#25351;&#23450;&#22825;&#25968;&#20869;&#19981;&#20877;&#38656;&#35201;&#30340;Eloquent&#35760;&#24405;&#26469;&#20943;&#23569;&#26087;&#25968;&#25454;&#12290;&#23450;&#26399;&#20462;&#21098;&#36807;&#26102;&#30340;&#20449;&#24687;&#21487;&#20197;&#33410;&#30465;&#25968;&#25454;&#24211;&#31354;&#38388;&#65292;&#38477;&#20302;&#23384;&#20648;&#25104;&#26412;&#65292;&#24182;&#36890;&#24120;&#25552;&#39640;&#24615;&#33021;&#12290;&#35831;&#30830;&#20445;&#22312;&#37096;&#32626;&#21040;&#29983;&#20135;&#29615;&#22659;&#20043;&#21069;&#65292;&#22312;&#38750;&#29983;&#20135;&#29615;&#22659;&#20013;&#24443;&#24213;&#27979;&#35797;&#20219;&#20309;&#20462;&#21098;&#31574;&#30053;&#65292;&#20197;&#30830;&#20445;&#20854;&#25353;&#39044;&#26399;&#24037;&#20316;&#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>&#20026;&#20102;&#23454;&#29616;&#33258;&#21160;&#21024;&#38500;&#25351;&#23450;&#26085;&#26399;&#21518;&#65288;&#20551;&#35774;&#20026;N&#22825;&#65289;&#30340;&#26087;&#35760;&#24405;&#21151;&#33021;&#65292;&#25105;&#20204;&#21487;&#20197;&#20351;&#29992;Eloquent ORM&#32467;&#21512;MySQL&#25968;&#25454;&#24211;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#25805;&#20316;&#30340;&#19968;&#20010;&#20363;&#23376;&#65306;<\/p>\n<p>&#39318;&#20808;&#65292;&#30830;&#20445;&#20320;&#24050;&#32463;&#23433;&#35013;&#20102;Eloquent&#21644;PHP&#65292;&#24182;&#19988;&#24050;&#23558;&#25968;&#25454;&#24211;&#36830;&#25509;&#21040;&#26381;&#21153;&#22120;&#19978;&#12290;<\/p>\n<ol>\n<li>&#39318;&#20808;&#21019;&#24314;&#19968;&#20010;&#27169;&#22411;&#31867;&#26469;&#23384;&#20648;&#25968;&#25454;&#65306;\n<pre><code class=\"language-php\">\n&lt;?php<\/code><\/pre><\/li>\n<\/ol>\n<p>use IlluminateDatabaseEloquentModel;<\/p>\n<p>class Record extends Model\n{\nprotected $fillable = [&#8216;content&#8217;, &#8216;timestamp&#8217;];<\/p>\n<pre><code>public function getTimestampAttribute($value)\n{\n    return new DateTime($value);\n}<\/code><\/pre>\n<p>}<\/p>\n<pre><code>\n2. &#28982;&#21518;&#21019;&#24314;&#19968;&#20010;&#36801;&#31227;&#25991;&#20214;&#26469;&#23450;&#20041;&#34920;&#32467;&#26500;&#65306;\n```sql\n&lt;?php\n\nuse IlluminateDatabaseMigrationsMigration;\nuse IlluminateDatabaseSchemaBlueprint;\nuse IlluminateSupportFacadesSchema;\n\nclass CreateRecordsTable extends Migration\n{\n    \/**\n     * Run the migrations.\n     *\n     * @return void\n     *\/\n    public function up()\n    {\n        Schema::create('records', function (Blueprint $table) {\n            $table-&gt;id();\n            $table-&gt;string('content');\n            $table-&gt;timestamps();\n        });\n    }\n\n    \/**\n     * Reverse the migrations.\n     *\n     * @return void\n     *\/\n    public function down()\n    {\n        Schema::dropIfExists('records');\n    }\n}<\/code><\/pre>\n<ol start=\"3\">\n<li>&#22312;&#25511;&#21046;&#22120;&#20013;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#26041;&#27861;&#26469;&#22788;&#29702;&#21024;&#38500;&#25805;&#20316;:\n<pre><code class=\"language-php\">\n&lt;?php<\/code><\/pre><\/li>\n<\/ol>\n<p>namespace AppHttpControllers;<\/p>\n<p>use IlluminateHttpRequest;\nuse AppModelsRecord;<\/p>\n<p>class RecordsController extends Controller\n{\npublic function deleteOld(Request $request, int $days)\n{\n$record = Record::whereDate(&#8216;timestamp&#8217;, &#8216;&lt;=&#8217;, date(&#8220;Y-m-d&#8221;, strtotime(&#8220;-$days days&#8221;)))-&gt;delete();<\/p>\n<pre><code>    if ($record) {\n        return response()-&gt;json(['status' =&gt; 'success']);\n    } else {\n        return response()-&gt;json(['status' =&gt; 'error'], 500);\n    }\n}<\/code><\/pre>\n<p>}<\/p>\n<pre><code>\n4. &#26368;&#21518;&#65292;&#22312;&#24212;&#29992;&#20013;&#27880;&#20876;&#36825;&#20010;&#25511;&#21046;&#22120;:\n```php\n&lt;?php\n\nnamespace AppHttpControllers;\n\nuse IlluminateHttpRequest;\nuse AppModelsRecord;\n\nclass RecordsController extends Controller\n{\n    public function __construct() {\n        $this-&gt;middleware('auth:api');\n    }\n\n    public function deleteOld(Request $request, int $days)\n    {\n        $record = Record::whereDate('timestamp', '&lt;=', date(\"Y-m-d\", strtotime(\"-$days days\")))-&gt;delete();\n\n        if ($record) {\n            return response()-&gt;json(['status' =&gt; 'success']);\n        } else {\n            return response()-&gt;json(['status' =&gt; 'error'], 500);\n        }\n    }\n}<\/code><\/pre>\n<p>&#20197;&#19978;&#20195;&#30721;&#28436;&#31034;&#20102;&#19968;&#20010;&#22522;&#26412;&#30340;&#33258;&#21160;&#21024;&#38500;&#21151;&#33021;&#65292;&#23427;&#20250;&#22312;&#29305;&#23450;&#26085;&#26399;&#20043;&#21518;&#21024;&#38500;&#25152;&#26377;&#19982;&#35813;&#26085;&#26399;&#30456;&#38548;N&#22825;&#30340;&#25968;&#25454;&#12290;&#20320;&#21487;&#20197;&#26681;&#25454;&#38656;&#35201;&#35843;&#25972;&#36923;&#36753;&#21644;&#21442;&#25968;&#20197;&#28385;&#36275;&#20320;&#30340;&#38656;&#27714;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; Eloquent &#26159; Laravel &#26694;&#26550;&#20013;&#30340;&#19968;&#20010;&#24378;&#22823; ORM&#65288;&#23545;&#35937;&#20851;&#038;#3199..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[44],"tuisongtax":[],"class_list":["post-872","my1js","type-my1js","status-publish","hentry","my1js2nav-laravel"],"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\/872","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=872"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=872"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=872"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=872"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}