{"id":932,"date":"2025-06-12T03:03:09","date_gmt":"2025-06-11T19:03:09","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/932.html"},"modified":"2025-06-12T03:03:09","modified_gmt":"2025-06-11T19:03:09","slug":"laravel-%e6%9f%a5%e8%af%a2%e6%9e%84%e9%80%a0%e5%99%a8%e4%b8%ad%e7%9a%84-upsert%ef%bc%9a%e6%95%99%e7%a8%8b%e4%b8%8e%e7%a4%ba%e4%be%8b","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/932.html","title":{"rendered":"Laravel \u67e5\u8be2\u6784\u9020\u5668\u4e2d\u7684 Upsert\uff1a\u6559\u7a0b\u4e0e\u793a\u4f8b"},"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>&#26631;&#39064;&#65306;Laravel &#26597;&#35810;&#26500;&#36896;&#22120;&#20013;&#30340; Upsert&#65306;&#25945;&#31243;&#19982;&#31034;&#20363;<\/p>\n<p>Laravel &#26159;&#19968;&#20010;&#24378;&#22823;&#30340; PHP &#26694;&#26550;&#65292;&#23427;&#25552;&#20379;&#20102;&#20016;&#23500;&#30340;&#24037;&#20855;&#21644;&#21151;&#33021;&#26469;&#31616;&#21270;&#24320;&#21457;&#36807;&#31243;&#12290;&#22312;&#22788;&#29702;&#25968;&#25454;&#24211;&#25805;&#20316;&#26102;&#65292;Upsert&#65288;&#21363;&#25554;&#20837;&#25110;&#26356;&#26032;&#65289;&#26159;&#19968;&#31181;&#24120;&#35265;&#30340;&#38656;&#27714;&#12290;Laravel &#25552;&#20379;&#20102;&#26041;&#20415;&#30340;&#26597;&#35810;&#26500;&#36896;&#22120;&#26469;&#23454;&#29616;&#36825;&#19968;&#21151;&#33021;&#12290;&#19979;&#38754;&#25105;&#20204;&#23558;&#36890;&#36807;&#19968;&#20010;&#31616;&#21333;&#30340;&#31034;&#20363;&#65292;&#20171;&#32461;&#22914;&#20309;&#20351;&#29992; Laravel &#30340;&#26597;&#35810;&#26500;&#36896;&#22120;&#36827;&#34892; Upsert&#12290;<\/p>\n<h3>1. &#23433;&#35013; Laravel<\/h3>\n<p>&#39318;&#20808;&#65292;&#30830;&#20445;&#20320;&#24050;&#32463;&#23433;&#35013;&#20102; Laravel&#12290;&#22914;&#26524;&#27809;&#26377;&#23433;&#35013;&#65292;&#21487;&#20197;&#36890;&#36807; Composer &#36827;&#34892;&#23433;&#35013;&#65306;<\/p>\n<pre><code class=\"language-bash\">composer create-project --prefer-dist laravel\/laravel my-laravel-app\ncd my-laravel-app<\/code><\/pre>\n<h3>2. &#21019;&#24314;&#27169;&#22411;<\/h3>\n<p>&#21019;&#24314;&#19968;&#20010;&#27169;&#22411;&#26469;&#34920;&#31034;&#20320;&#30340;&#34920;&#32467;&#26500;&#12290;&#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010;&#21517;&#20026; <code>User<\/code> &#30340;&#34920;&#65292;&#24182;&#19988;&#36825;&#20010;&#34920;&#20013;&#26377; <code>id<\/code>, <code>name<\/code>, &#21644; <code>email<\/code> &#23383;&#27573;&#12290;<\/p>\n<pre><code class=\"language-bash\">php artisan make:model User<\/code><\/pre>\n<p>&#25171;&#24320; <code>app\/Models\/User.php<\/code> &#25991;&#20214;&#65292;&#28155;&#21152;&#20197;&#19979;&#23646;&#24615;&#21644;&#26041;&#27861;&#65306;<\/p>\n<pre><code class=\"language-php\">namespace AppModels;\n\nuse IlluminateDatabaseEloquentModel;\nuse IlluminateSupportFacadesDB;\n\nclass User extends Model\n{\n    protected $fillable = ['name', 'email'];\n\n    public function upsert(array $data)\n    {\n        DB::table('users')\n            -&gt;updateOrInsert($data, [\n                'id' =&gt; $data['id'],\n            ]);\n    }\n}<\/code><\/pre>\n<h3>3. &#20351;&#29992; Upsert &#26041;&#27861;<\/h3>\n<p>&#29616;&#22312;&#65292;&#25105;&#20204;&#21487;&#20197;&#20351;&#29992; <code>upsert<\/code> &#26041;&#27861;&#26469;&#25191;&#34892; Upsert &#25805;&#20316;&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;&#31034;&#20363;&#20195;&#30721;&#65306;<\/p>\n<pre><code class=\"language-php\">use AppModelsUser;\n\n$userData = [\n    'id' =&gt; 1,\n    'name' =&gt; 'John Doe',\n    'email' =&gt; 'john.doe@example.com',\n];\n\ntry {\n    User::upsert($userData);\n    echo \"Upsert successful!\";\n} catch (Exception $e) {\n    echo \"Upsert failed: \" . $e-&gt;getMessage();\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#31034;&#20363;&#20013;&#65292;&#25105;&#20204;&#23581;&#35797;&#25554;&#20837;&#19968;&#26465;&#25968;&#25454;&#12290;&#22914;&#26524;&#35813;&#25968;&#25454;&#24050;&#32463;&#23384;&#22312;&#20110;&#34920;&#20013;&#65292;&#21017;&#20250;&#26356;&#26032;&#36825;&#26465;&#35760;&#24405;&#65307;&#21542;&#21017;&#65292;&#20250;&#25554;&#20837;&#26032;&#35760;&#24405;&#12290;<\/p>\n<h3>4. &#31034;&#20363;&#25968;&#25454;<\/h3>\n<p>&#20026;&#20102;&#26356;&#22909;&#22320;&#29702;&#35299; Upsert &#21151;&#33021;&#65292;&#35753;&#25105;&#20204;&#28155;&#21152;&#19968;&#20123;&#31034;&#20363;&#25968;&#25454;&#24182;&#36827;&#34892;&#27979;&#35797;&#65306;<\/p>\n<pre><code class=\"language-php\">$userData1 = [\n    'id' =&gt; 1,\n    'name' =&gt; 'John Doe',\n    'email' =&gt; 'john.doe@example.com',\n];\n\n$userData2 = [\n    'id' =&gt; 2,\n    'name' =&gt; 'Jane Smith',\n    'email' =&gt; 'jane.smith@example.com',\n];\n\nUser::upsert($userData1); \/\/ &#25554;&#20837;&#25110;&#26356;&#26032;&#29992;&#25143; 1\nUser::upsert($userData2); \/\/ &#25554;&#20837;&#25110;&#26356;&#26032;&#29992;&#25143; 2<\/code><\/pre>\n<p>&#36816;&#34892;&#19978;&#36848;&#20195;&#30721;&#21518;&#65292;&#20320;&#20250;&#30475;&#21040;&#36755;&#20986;&#65306;<\/p>\n<pre><code>Upsert successful!\nUpsert successful!<\/code><\/pre>\n<p>&#36825;&#34920;&#26126;&#25968;&#25454;&#24050;&#32463;&#25104;&#21151;&#25554;&#20837;&#25110;&#26356;&#26032;&#12290;<\/p>\n<h3>&#24635;&#32467;<\/h3>\n<p>&#36890;&#36807;&#20197;&#19978;&#27493;&#39588;&#65292;&#25105;&#20204;&#23637;&#31034;&#20102;&#22914;&#20309;&#22312; Laravel &#20013;&#20351;&#29992;&#26597;&#35810;&#26500;&#36896;&#22120;&#36827;&#34892; Upsert &#25805;&#20316;&#12290;&#36825;&#31181;&#26041;&#27861;&#31616;&#21333;&#26131;&#29992;&#65292;&#36866;&#29992;&#20110;&#22823;&#22810;&#25968;&#38656;&#35201;&#25554;&#20837;&#25110;&#26356;&#26032;&#25968;&#25454;&#30340;&#38656;&#27714;&#12290;&#24076;&#26395;&#36825;&#20010;&#25945;&#31243;&#23545;&#20320;&#26377;&#25152;&#24110;&#21161;&#65281;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--2\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/zp-400x300.jpg\" alt=\"&#40657;&#26495;Bug&#35762;&#24072;\" class=\"wp-image-1849\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#40657;&#26495;Bug&#35762;&#24072;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<body><h2>&#27010;&#35272;<\/h2><p>&#22312;&#20351;&#29992;Laravel&#26500;&#24314;Web&#24212;&#29992;&#26102;&#65292;&#24320;&#21457;&#20154;&#21592;&#24120;&#24120;&#36935;&#21040;&#38656;&#35201;&#26356;&#26032;&#29616;&#26377;&#35760;&#24405;&#25110;&#22914;&#26524;&#23427;&#23578;&#26410;&#23384;&#22312;&#21017;&#21019;&#24314;&#26032;&#35760;&#24405;&#30340;&#24773;&#26223;&#12290;&#36825;&#26159;&#19968;&#39033;&#24120;&#35265;&#30340;&#20219;&#21153;&#65292;&#31216;&#20026;&ldquo;upsert&rdquo;&#65292;&#21363;&ldquo;&#26356;&#26032;&#25110;&#25554;&#20837;&rdquo;&#12290;&#26412;&#25945;&#31243;&#23558;&#25351;&#23548;&#24744;&#36890;&#36807;Laravel&#26597;&#35810;&#26500;&#36896;&#22120;&#20013;&#30340;&#27493;&#39588;&#26469;&#20351;&#29992;&ldquo;upsert&rdquo;&#21151;&#33021;&#65292;&#21253;&#25324;&#20174;&#22522;&#30784;&#21040;&#26356;&#39640;&#32423;&#30340;&#24212;&#29992;&#31243;&#24207;&#30340;&#21508;&#31181;&#31034;&#20363;&#12290;<\/p><h3>Upsert&#65288;&#26356;&#26032;&#25110;&#25554;&#20837;&#65289;&#22312;Laravel&#20013;&#30340;&#20351;&#29992;&#20171;&#32461;&#12290;<\/h3><p>Laravel 8 &#24341;&#20837;&#20102;&#19968;&#31181;&#31616;&#27905;&#26126;&#20102;&#30340;&#19978;&#25512;&#65288;upsert&#65289;&#25805;&#20316;&#26041;&#24335;&#65292;&#26080;&#38656;&#22797;&#26434;&#30340;&#26597;&#35810;&#25110;&#26465;&#20214;&#22359;&#12290;&#22312;&#27492;&#20043;&#21069;&#65292;&#24320;&#21457;&#20154;&#21592;&#36890;&#24120;&#38656;&#35201;&#32534;&#20889;&#36923;&#36753;&#26469;&#26816;&#26597;&#35760;&#24405;&#26159;&#21542;&#23384;&#22312;&#65292;&#28982;&#21518;&#20915;&#23450;&#26159;&#21542;&#26356;&#26032;&#29616;&#26377;&#26465;&#30446;&#36824;&#26159;&#25554;&#20837;&#26032;&#26465;&#30446;&#12290;&#29616;&#22312;&#26377;&#20102; Laravel &#20013;&#30340;&#26032;&#19978;&#25512;&#26041;&#27861;&#65292;&#24320;&#21457;&#32773;&#21487;&#20197;&#22312;&#21333;&#20010;&#26597;&#35810;&#20013;&#23436;&#25104;&#27492;&#25805;&#20316;&#65292;&#20174;&#32780;&#20943;&#23569;&#20195;&#30721;&#22797;&#26434;&#24615;&#21644;&#28508;&#22312;&#38169;&#35823;&#12290;<\/p><h2>&#29702;&#35299;&#22522;&#26412;&#27010;&#24565;<\/h2><p>&#22312;&#36827;&#34892;Laravel&#20013;&#30340;upsert&#25805;&#20316;&#20043;&#21069;&#65292;&#35753;&#25105;&#20204;&#20808;&#20102;&#35299;&#19968;&#19979;&#22522;&#30784;&#30693;&#35782;&#65306;<\/p><pre><code>\nDB::table('users')-&gt;upsert(\n    [\n        ['email' =&gt; '[email&nbsp;protected]', 'name' =&gt; 'John Doe'],\n        ['email' =&gt; '[email&nbsp;protected]', 'name' =&gt; 'Jane Doe']\n    ],\n    ['email'],\n    ['name']\n);\n<\/code><\/pre><p>&#22312;&#19978;&#36848;&#20363;&#23376;&#20013;&#65292;<code>upsert<\/code>Laravel &#30340; Fluent &#26597;&#35810;&#26500;&#24314;&#22120;&#25552;&#20379;&#30340;&#26041;&#27861;&#29992;&#20110;&#25191;&#34892;&#25105;&#20204;&#30340; Upsert &#25805;&#20316;&#12290;&#35813;&#26041;&#27861;&#25509;&#21463;&#19977;&#20010;&#21442;&#25968;&#65306;<\/p><p>&#31532;&#19977;&#20010;&#35770;&#28857;&#26159;&#65292;&#22914;&#26524;&#25214;&#21040;&#21305;&#37197;&#35760;&#24405;&#65292;&#21017;&#24212;&#35813;&#26356;&#26032;&#21738;&#20123;&#21015;&#12290;<\/p><p>&#31532;&#20108;&#26465;&#21442;&#25968;&#30001;Laravel&#20915;&#23450;&#26159;&#21542;&#35760;&#24405;&#24050;&#23384;&#22312;&#30340;&#21015;&#32452;&#25104;&#12290;<\/p><p>&#31532;&#19968;&#20010;&#21442;&#25968;&#26159;&#19968;&#20010;&#21253;&#21547;&#35201;&#25554;&#20837;&#25110;&#26356;&#26032;&#35760;&#24405;&#30340;&#25968;&#32452;&#12290;<\/p><p>&#22312;&#25105;&#20204;&#30340;&#24773;&#20917;&#19979;&#65292;&#22914;&#26524;&#25968;&#25454;&#24211;&#20013;&#26377;&#30456;&#21516;&#30005;&#23376;&#37038;&#20214;&#30340;&#29992;&#25143;&#65292;Laravel &#23558;&#26356;&#26032;&#35813;&#29992;&#25143;&#30340;&#21517;&#31216;&#65307;&#22914;&#26524;&#27809;&#26377;&#65292;&#21017;&#25554;&#20837;&#26032;&#35760;&#24405;&#12290;<\/p><h2>&#22522;&#26412;&#26356;&#26032;&#25554;&#20837;&#25805;&#20316;<\/h2><p>&#35753;&#25105;&#20204;&#20174;&#31616;&#21333;&#30340;&#25554;&#20837;&#26356;&#26032;&#25805;&#20316;&#24320;&#22987;&#65292;&#20197;&#29992;&#25143;&#20026;&#20363;&#12290;&#24819;&#35937;&#19968;&#19979;&#25105;&#20204;&#24819;&#35201;&#21521;&#25968;&#25454;&#24211;&#25554;&#20837;&#19968;&#20010;&#26032;&#29992;&#25143;&#65292;&#30005;&#23376;&#37038;&#20214;&#20026;'[email&nbsp;protected]&#8217;&#65292;&#20294;&#26159;&#22914;&#26524;&#36825;&#20010;&#37038;&#31665;&#24050;&#32463;&#23384;&#22312;&#65292;&#21017;&#21482;&#24076;&#26395;&#26356;&#26032;&#29992;&#25143;&#30340;&#21517;&#31216;&#20026;&#8217;New User&#8217;&#12290;&#20197;&#19979;&#26159;&#20351;&#29992;Laravel&#30340;&#26597;&#35810;&#26500;&#24314;&#22120;&#23454;&#29616;&#36825;&#19968;&#30446;&#26631;&#30340;&#26041;&#27861;&#65306;<\/p><pre><code>\nuse IlluminateSupportFacadesDB;\n\nDB::table('users')-&gt;upsert(\n    [\n        'email' =&gt; '[email&nbsp;protected]', 'name' =&gt; 'New User'\n    ],\n    'email',\n    'name'\n);\n<\/code><\/pre><p>&#36825;&#26159;&#19968;&#20010;&#38750;&#24120;&#31616;&#21333;&#30340;&#31034;&#20363;&#65292;&#35813;&#31034;&#20363;&#26681;&#25454;&#21807;&#19968;&#38190;&#65288;&#22312;&#36825;&#31181;&#24773;&#20917;&#19979;&#20026;&#8217;email&#8217;&#65289;&#26356;&#26032;&#21333;&#20010;&#26465;&#30446;&#12290;<\/p><h2>&#39640;&#32423;&#26356;&#26032;&#25554;&#20837;&#25805;&#20316;<\/h2><p>&#24403;&#20320;&#23545;&#22522;&#26412;&#30340;&#25554;&#20837;&#21644;&#26356;&#26032;&#25805;&#20316;&#65288;upsert&#65289;&#21464;&#24471;&#36234;&#26469;&#36234;&#29087;&#32451;&#26102;&#65292;&#21487;&#33021;&#20250;&#21457;&#29616;&#33258;&#24049;&#38656;&#35201;&#25191;&#34892;&#26356;&#22797;&#26434;&#30340; upsert &#25805;&#20316;&#12290;&#20363;&#22914;&#65292;&#24744;&#21487;&#33021;&#24076;&#26395;&#21516;&#26102;&#26356;&#26032;&#22810;&#20010;&#23383;&#27573;&#25110;&#26681;&#25454;&#22810;&#20010;&#21807;&#19968;&#38190;&#36816;&#34892; upsert &#25805;&#20316;&#12290;&#19979;&#38754;&#26159;&#28436;&#31034;&#22914;&#20309;&#36827;&#34892;&#22810;&#23383;&#27573; upsert &#30340;&#31034;&#20363;&#65306;<\/p><pre><code>\nDB::table('users')-&gt;upsert(\n    [\n        'email' =&gt; '[email&nbsp;protected]',\n        'name' =&gt; 'Existing User',\n        'votes' =&gt; 100\n    ],\n    'email',\n    ['name', 'votes']\n);\n<\/code><\/pre><p>&#22312;&#35813;&#31034;&#20363;&#20013;&#65292;&#22914;&#26524; &#8216;[email&nbsp;protected]&#8217; &#24050;&#32463;&#23384;&#22312;&#65292;&#21017;Laravel &#20250;&#21516;&#26102;&#26356;&#26032; &#8216;name&#8217; &#21644; &#8216;votes&#8217; &#21015;&#65307;&#21542;&#21017;&#65292;&#23427;&#20250;&#25554;&#20837;&#26032;&#30340;&#35760;&#24405;&#65292;&#21253;&#25324;&#25152;&#26377;&#19977;&#20010;&#20540;&#12290;<\/p><h2>&#19982;&#22797;&#21512;&#38190;&#24037;&#20316;<\/h2><p>&#26377;&#26102;&#65292;&#20320;&#38656;&#35201;&#26681;&#25454;&#22810;&#20010;&#21015;&#26469;&#35782;&#21035;&#35760;&#24405;&#12290;Laravel &#30340; upsert &#26041;&#27861;&#20063;&#25903;&#25345;&#22797;&#21512;&#38190;&#29992;&#20110;&#27492;&#30446;&#30340;&#12290;&#36825;&#37324;&#26159;&#22914;&#20309;&#20351;&#29992;&#22797;&#21512;&#38190;&#36827;&#34892; upsert &#30340;&#26041;&#27861;&#65306;<\/p><pre><code>\nDB::table('user_votes')-&gt;upsert(\n    [\n        ['user_id' =&gt; 1, 'campaign_id' =&gt; 2, 'votes' =&gt; 3],\n        ['user_id' =&gt; 2, 'campaign_id' =&gt; 3, 'votes' =&gt; 4],\n    ],\n    ['user_id', 'campaign_id'],\n    'votes'\n);\n<\/code><\/pre><p>&#35813;&#25805;&#20316;&#20351;&#29992;&ldquo;&#29992;&#25143;ID&rdquo;&#21644;&ldquo;&#24191;&#21578;&#27963;&#21160;ID&rdquo;&#20316;&#20026;&#22797;&#21512;&#38190;&#65292;&#26816;&#26597;&#29616;&#26377;&#35760;&#24405;&#26159;&#21542;&#23384;&#22312;&#65292;&#22312;&#20915;&#23450;&#26356;&#26032;&ldquo;&#25237;&#31080;&rdquo;&#21015;&#36824;&#26159;&#25554;&#20837;&#26032;&#35760;&#24405;&#20043;&#21069;&#36827;&#34892;&#21028;&#26029;&#12290;<\/p><h2>&#20351;&#29992;Eloquent&#22788;&#29702;&#25554;&#20837;&#25805;&#20316;&#65288;Upserts&#65289;<\/h2><p>&#34429;&#28982;&#26412;&#25945;&#31243;&#37325;&#28857;&#20171;&#32461;&#20351;&#29992;Laravel&#30340;&#26597;&#35810;&#26500;&#24314;&#22120;&#65292;&#20294;&#21516;&#26679;&#20540;&#24471;&#25552;&#21450;&#30340;&#26159;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992;Laravel&#30340;Eloquent ORM&#36827;&#34892;upsert&#25805;&#20316;&#12290;&#35821;&#27861;&#38750;&#24120;&#30456;&#20284;&#65306;<\/p><pre><code>\nuse AppModelsUser;\n\nUser::upsert(\n    [\n        ['email' =&gt; '[email&nbsp;protected]', 'name' =&gt; 'John Doe'],\n        ['email' =&gt; '[email&nbsp;protected]', 'name' =&gt; 'Jane Doe']\n    ],\n    ['email'],\n    ['name']\n);\n<\/code><\/pre><p>&#36825;&#20010;&#29255;&#27573;&#23558;&#25191;&#34892;&#19982;&#25105;&#20204;&#21021;&#22987;&#30340;&#26597;&#35810;&#26500;&#24314;&#22120;&#31034;&#20363;&#30456;&#21516;&#30340;&#25805;&#20316;&#65292;&#20294;&#20351;&#29992;&#29992;&#25143;&#27169;&#22411;&#12290;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>&#24635;&#32467;&#19968;&#19979;&#65292;Laravel&#30340;upsert&#21151;&#33021;&#31616;&#21270;&#20102;&#25968;&#25454;&#24211;&#25805;&#20316;&#65292;&#20801;&#35768;&#24744;&#32534;&#20889;&#26356;&#31616;&#27905;&#21644;&#39640;&#25928;&#30340;&#20195;&#30721;&#12290;&#27491;&#30830;&#29702;&#35299;&#21644;&#20351;&#29992;upsert&#21487;&#20197;&#25552;&#39640;&#24212;&#29992;&#31243;&#24207;&#20013;&#30340;&#25968;&#25454;&#24211;&#20132;&#20114;&#21487;&#35835;&#24615;&#21644;&#21487;&#32500;&#25252;&#24615;&#12290;&#20174;&#22522;&#30784;&#31034;&#20363;&#21040;&#26356;&#22797;&#26434;&#30340;&#22330;&#26223;&#65292;&#26412;&#25945;&#31243;&#26088;&#22312;&#20026;&#24744;&#25552;&#20379;&#22312;Laravel&#26597;&#35810;&#26500;&#24314;&#22120;&#20013;&#21033;&#29992;upsert&#25216;&#33021;&#25152;&#38656;&#30340;&#33021;&#21147;&#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; Laravel &#20013;&#65292;<code>Upsert<\/code> &#26159;&#19968;&#20010;&#38750;&#24120;&#26377;&#29992;&#30340;&#20989;&#25968;&#65292;&#23427;&#20801;&#35768;&#20320;&#22312;&#29616;&#26377;&#25968;&#25454;&#19978;&#28155;&#21152;&#26032;&#20540;&#65292;&#24182;&#26356;&#26032;&#24050;&#23384;&#22312;&#30340;&#25968;&#25454;&#12290;&#36825;&#20010;&#21151;&#33021;&#38750;&#24120;&#36866;&#21512;&#24403;&#20320;&#35201;&#25554;&#20837;&#19968;&#20010;&#26032;&#30340;&#23454;&#20307;&#24182;&#21516;&#26102;&#26356;&#26032;&#21478;&#19968;&#20010;&#23454;&#20307;&#26102;&#12290;<\/p>\n<h3>&#22914;&#20309;&#20351;&#29992; <code>Upsert<\/code><\/h3>\n<p>&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#30830;&#20445;&#24050;&#32463;&#23433;&#35013;&#20102; Laravel &#30340;&#22522;&#26412;&#20381;&#36182;&#24211;&#65292;&#28982;&#21518;&#36890;&#36807;&#20197;&#19979;&#21629;&#20196;&#23433;&#35013; Laravel &#27169;&#22359;&#65306;<\/p>\n<pre><code class=\"language-bash\">composer require laravel\/ui<\/code><\/pre>\n<p>&#25509;&#19979;&#26469;&#65292;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#25511;&#21046;&#22120;&#26469;&#22788;&#29702; <code>Upsert<\/code> &#21151;&#33021;&#12290;&#20551;&#35774;&#25105;&#20204;&#35201;&#22788;&#29702;&#29992;&#25143;&#34920;&#30340;&#20004;&#20010;&#27169;&#22411;&#65288;User &#21644; Role&#65289;&#65306;<\/p>\n<ol>\n<li>\n<p>&#22312; <code>app\/Http\/Controllers<\/code> &#30446;&#24405;&#19979;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#25991;&#20214;&#65306;<\/p>\n<pre><code class=\"language-php\">namespace AppHttpControllers;\n\nuse IlluminateHttpRequest;\nuse AppUser;\nuse AppRole;\n\nclass UserController extends Controller\n{\n   \/**\n    * Display a listing of the resource.\n    *\n    * @return IlluminateHttpResponse\n    *\/\n   public function index()\n   {\n       \/\/ Your code here...\n   }\n\n   \/**\n    * Show the form for creating a new resource.\n    *\n    * @return IlluminateHttpResponse\n    *\/\n   public function create()\n   {\n       return view('create');\n   }\n\n   \/**\n    * Store a newly created resource in storage.\n    *\n    * @param  IlluminateHttpRequest  $request\n    * @return IlluminateHttpResponse\n    *\/\n   public function store(Request $request)\n   {\n       $this-&gt;validate($request, [\n           'name' =&gt; 'required|string|max:255',\n           'email' =&gt; 'required|email|unique:users,email',\n           'password' =&gt; 'required|min:6',\n           'role_id' =&gt; 'required|exists:roles,id'\n       ]);\n\n       User::create([\n           'name' =&gt; $request-&gt;input('name'),\n           'email' =&gt; $request-&gt;input('email'),\n           'password' =&gt; bcrypt($request-&gt;input('password')),\n           'role_id' =&gt; $request-&gt;input('role_id')\n       ]);\n\n       if ($request-&gt;hasFile('image')) {\n           $image = $request-&gt;file('image');\n           $filename = time() . '_' . $image-&gt;getClientOriginalName();\n           $image-&gt;move(public_path('\/uploads'), $filename);\n           User::first()-&gt;update(['image' =&gt; '\/uploads\/' . $filename]);\n       }\n\n       return redirect('\/users')-&gt;with('success', 'User has been created successfully.');\n   }\n\n   \/**\n    * Display the specified resource.\n    *\n    * @param  int  $id\n    * @return IlluminateHttpResponse\n    *\/\n   public function show($id)\n   {\n       \/\/\n   }\n\n   \/**\n    * Show the form for editing the specified resource.\n    *\n    * @param  int  $id\n    * @return IlluminateHttpResponse\n    *\/\n   public function edit($id)\n   {\n       \/\/\n   }\n\n   \/**\n    * Update the specified resource in storage.\n    *\n    * @param  IlluminateHttpRequest  $request\n    * @param  int  $id\n    * @return IlluminateHttpResponse\n    *\/\n   public function update(Request $request, $id)\n   {\n       \/\/\n   }\n\n   \/**\n    * Remove the specified resource from storage.\n    *\n    * @param  int  $id\n    * @return IlluminateHttpResponse\n    *\/\n   public function destroy($id)\n   {\n       \/\/\n   }\n}<\/code><\/pre>\n<\/li>\n<li>\n<p>&#30830;&#20445;&#25511;&#21046;&#22120;&#26377;&#27491;&#30830;&#30340;&#36335;&#30001;&#23450;&#20041;&#65306;<\/p>\n<pre><code class=\"language-php\">Route::resource('users', UserController::class);<\/code><\/pre>\n<\/li>\n<li>\n<p>&#21019;&#24314;&#36801;&#31227;&#25991;&#20214;&#24182;&#25191;&#34892;&#65306;<\/p>\n<pre><code class=\"language-bash\">php artisan make:migration create_users_table --create=users\nphp artisan migrate<\/code><\/pre>\n<\/li>\n<li>\n<p>&#26368;&#21518;&#65292;&#36816;&#34892;&#24212;&#29992;&#24182;&#27979;&#35797; <code>Upsert<\/code> &#21151;&#33021;&#65306;<\/p>\n<pre><code class=\"language-bash\">php artisan serve<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>&#29616;&#22312;&#20320;&#21487;&#20197;&#23581;&#35797;&#25554;&#20837;&#21644;&#26356;&#26032;&#29992;&#25143;&#30340;&#23454;&#20363;&#12290;&#20363;&#22914;&#65292;&#35201;&#25554;&#20837;&#19968;&#20010;&#26032;&#30340;&#29992;&#25143;&#24182;&#35774;&#32622;&#20854;&#35282;&#33394;&#65306;<\/p>\n<pre><code class=\"language-bash\">curl -X POST http:\/\/localhost:8000\/users -H \"Content-Type: application\/json\" \n    -d '{  \"name\": \"John Doe\",  \"email\": \"johndoe@example.com\",  \"password\": \"password\",  \"role_id\": 1 }'<\/code><\/pre>\n<p>&#36825;&#23558;&#36820;&#22238;&#19968;&#20010;&#21253;&#21547;&#29992;&#25143;ID&#30340;&#26032;&#21709;&#24212;&#65306;<\/p>\n<pre><code class=\"language-json\">{\n  \"message\": \"User has been created successfully.\",\n  \"id\": 1,\n  \"name\": \"John Doe\",\n  \"email\": \"johndoe@example.com\"\n}<\/code><\/pre>\n<p>&#22914;&#26524;&#20320;&#24819;&#26356;&#26032;&#29992;&#25143;&#30340;&#35282;&#33394;&#65292;&#21482;&#38656;&#25552;&#20379;&#26032;&#30340;&#35282;&#33394;ID&#65306;<\/p>\n<pre><code class=\"language-bash\">curl -X PUT http:\/\/localhost:8000\/users\/1 -H \"Content-Type: application\/json\" \n    -d '{  \"role_id\": 2 }'<\/code><\/pre>\n<p>&#36825;&#20250;&#26356;&#26032;&#29992;&#25143;&#35282;&#33394;&#20026;&#31532;&#20108;&#20010;&#35282;&#33394;&#65306;<\/p>\n<pre><code class=\"language-json\">{\n  \"message\": \"User has been updated successfully.\",\n  \"id\": 1,\n  \"name\": \"John Doe\",\n  \"email\": \"johndoe@example.com\",\n  \"role_id\": 2\n}<\/code><\/pre>\n<p>&#36825;&#23601;&#26159;&#22914;&#20309;&#20351;&#29992; Laravel &#30340; <code>Upsert<\/code> &#21151;&#33021;&#26469;&#22788;&#29702;&#29992;&#25143;&#21644;&#35282;&#33394;&#12290;&#24076;&#26395;&#36825;&#23545;&#24744;&#26377;&#25152;&#24110;&#21161;&#65281;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#26631;&#39064;&#65306;Laravel &#26597;&#35810;&#26500;&#36896;&#22120;&#20013;&#30340; Upsert&#65306;&#25945;&#31243;&#19982;&#038;#310..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[44],"tuisongtax":[],"class_list":["post-932","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\/932","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=932"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=932"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=932"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=932"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}