{"id":983,"date":"2025-06-12T04:11:16","date_gmt":"2025-06-11T20:11:16","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/983.html"},"modified":"2025-06-12T04:11:16","modified_gmt":"2025-06-11T20:11:16","slug":"laravel-eloquent%ef%bc%9a%e5%a6%82%e4%bd%95%e6%b7%bb%e5%8a%a0%e5%94%af%e4%b8%80%e7%ba%a6%e6%9d%9f","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/983.html","title":{"rendered":"Laravel Eloquent\uff1a\u5982\u4f55\u6dfb\u52a0\u552f\u4e00\u7ea6\u675f"},"content":{"rendered":"<div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--1\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/dyA-1-400x300.jpg\" alt=\"Bug&#32534;&#35793;&#29422;\" class=\"wp-image-1842\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">Bug&#32534;&#35793;&#29422;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#22312; Laravel &#20013;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992; Eloquent &#27169;&#22411;&#26469;&#23450;&#20041;&#34920;&#30340;&#32467;&#26500;&#65292;&#24182;&#28155;&#21152;&#21807;&#19968;&#32422;&#26463;&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;&#31034;&#20363;&#65292;&#23637;&#31034;&#20102;&#22914;&#20309;&#20026;&#27169;&#22411;&#20013;&#30340;&#23383;&#27573;&#28155;&#21152;&#21807;&#19968;&#32422;&#26463;&#12290;<\/p>\n<p>&#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010;&#21517;&#20026; <code>User<\/code> &#30340;&#27169;&#22411;&#65292;&#24182;&#19988;&#25105;&#20204;&#24076;&#26395; <code>email<\/code> &#23383;&#27573;&#20855;&#26377;&#21807;&#19968;&#24615;&#32422;&#26463;&#12290;<\/p>\n<ol>\n<li>\n<p><strong>&#21019;&#24314;&#27169;&#22411;<\/strong>&#65306;\n&#39318;&#20808;&#65292;&#30830;&#20445;&#20320;&#24050;&#32463;&#23433;&#35013;&#20102; Laravel&#65292;&#24182;&#19988;&#24050;&#32463;&#21019;&#24314;&#20102;&#19968;&#20010;&#39033;&#30446;&#12290;&#28982;&#21518;&#65292;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#27169;&#22411;&#65306;<\/p>\n<pre><code class=\"language-bash\">php artisan make:model User<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#20462;&#25913;&#27169;&#22411;<\/strong>&#65306;\n&#25171;&#24320; <code>app\/User.php<\/code> &#25991;&#20214;&#65292;&#25214;&#21040; <code>fillable<\/code> &#23646;&#24615;&#65292;&#24182;&#28155;&#21152; <code>email<\/code> &#23383;&#27573;&#21040;&#20854;&#20013;&#65306;<\/p>\n<pre><code class=\"language-php\">namespace App;\n\nuse IlluminateDatabaseEloquentModel;\n\nclass User extends Model\n{\n   protected $fillable = ['name', 'email'];\n}<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#28155;&#21152;&#21807;&#19968;&#32422;&#26463;<\/strong>&#65306;\n&#20026;&#20102;&#30830;&#20445; <code>email<\/code> &#23383;&#27573;&#20855;&#26377;&#21807;&#19968;&#24615;&#32422;&#26463;&#65292;&#20320;&#38656;&#35201;&#22312;&#25968;&#25454;&#24211;&#36801;&#31227;&#25991;&#20214;&#20013;&#28155;&#21152;&#36825;&#20010;&#32422;&#26463;&#12290;&#39318;&#20808;&#65292;&#36816;&#34892;&#20197;&#19979;&#21629;&#20196;&#29983;&#25104;&#36801;&#31227;&#25991;&#20214;&#65306;<\/p>\n<pre><code class=\"language-bash\">php artisan make:migration add_unique_email_to_users_table --create users<\/code><\/pre>\n<p>&#28982;&#21518;&#25171;&#24320;&#29983;&#25104;&#30340;&#36801;&#31227;&#25991;&#20214; <code>database\/migrations\/xxxx_xx_xx_xxxxxx_add_unique_email_to_users_table.php<\/code>&#65292;&#24182;&#28155;&#21152;&#20197;&#19979;&#20195;&#30721;&#65306;<\/p>\n<pre><code class=\"language-php\">use IlluminateDatabaseMigrationsMigration;\nuse IlluminateDatabaseSchemaBlueprint;\nuse IlluminateSupportFacadesSchema;\n\nclass AddUniqueEmailToUsersTable extends Migration\n{\n   public function up()\n   {\n       Schema::table('users', function (Blueprint $table) {\n           $table-&gt;unique('email');\n       });\n   }\n\n   public function down()\n   {\n       Schema::table('users', function (Blueprint $table) {\n           $table-&gt;dropUnique('email');\n       });\n   }\n}<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#36816;&#34892;&#36801;&#31227;<\/strong>&#65306;\n&#36816;&#34892;&#36801;&#31227;&#20197;&#24212;&#29992;&#21807;&#19968;&#32422;&#26463;&#65306;<\/p>\n<pre><code class=\"language-bash\">php artisan migrate<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#39564;&#35777;&#21807;&#19968;&#32422;&#26463;<\/strong>&#65306;\n&#20320;&#21487;&#20197;&#36890;&#36807;&#23581;&#35797;&#25554;&#20837;&#37325;&#22797;&#30340;&#30005;&#23376;&#37038;&#20214;&#26469;&#39564;&#35777;&#21807;&#19968;&#32422;&#26463;&#26159;&#21542;&#29983;&#25928;&#12290;&#20363;&#22914;&#65292;&#22914;&#26524;&#20320;&#35797;&#22270;&#25554;&#20837;&#19968;&#20010;&#24050;&#32463;&#23384;&#22312;&#30340;&#30005;&#23376;&#37038;&#20214;&#65292;Laravel &#20250;&#25243;&#20986;&#24322;&#24120;&#65306;<\/p>\n<pre><code class=\"language-php\">$user = new User();\n$user-&gt;name = 'John Doe';\n$user-&gt;email = 'john.doe@example.com'; \/\/ &#36825;&#20010;&#30005;&#23376;&#37038;&#20214;&#24050;&#32463;&#23384;&#22312;\n\ntry {\n   $user-&gt;save();\n} catch (IlluminateDatabaseQueryException $e) {\n   echo $e-&gt;getMessage(); \/\/ &#36755;&#20986;: Duplicate entry for key 'email'\n}<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>&#36890;&#36807;&#20197;&#19978;&#27493;&#39588;&#65292;&#20320;&#21487;&#20197;&#22312; Laravel &#20013;&#20026;&#27169;&#22411;&#20013;&#30340;&#23383;&#27573;&#28155;&#21152;&#21807;&#19968;&#32422;&#26463;&#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>Laravel&#30340;Eloquent ORM&#25552;&#20379;&#20102;&#23545;&#25968;&#25454;&#24211;&#36827;&#34892;&#31616;&#21333;Active Record&#23454;&#29616;&#30340;&#21151;&#33021;&#12290;&#22312;&#22788;&#29702;&#20851;&#31995;&#22411;&#25968;&#25454;&#24211;&#26102;&#65292;&#21807;&#19968;&#32422;&#26463;&#65288;UNIQUE&#65289;&#23545;&#20110;&#30830;&#20445;&#25968;&#25454;&#23436;&#25972;&#24615;&#38750;&#24120;&#37325;&#35201;&#65292;&#21487;&#20197;&#36890;&#36807;&#36991;&#20813;&#29305;&#23450;&#21015;&#25110;&#32452;&#21512;&#21015;&#19978;&#30340;&#37325;&#22797;&#20540;&#26469;&#23454;&#29616;&#36825;&#19968;&#30446;&#26631;&#12290;&#22312;&#36825;&#31687;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#23558;&#36890;&#36807;&#20351;&#29992;&#36801;&#31227;&#21644;&#27169;&#22411;&#20107;&#20214;&#30340;&#26041;&#27861;&#65292;&#21521;Laravel&#27169;&#22411;&#28155;&#21152;&#21807;&#19968;&#32422;&#26463;&#12290;<\/p><h3>&#29702;&#35299;&#21807;&#19968;&#32422;&#26463;&#65288;UNIQUE Constraint&#65289;<\/h3><p>&#19968;&#20010;&#21807;&#19968;&#32422;&#26463;&#30830;&#20445;&#34920;&#20013;&#30340;&#27599;&#19968;&#34892;&#30340;&#26576;&#19968;&#21015;&#25110;&#19968;&#32452;&#21015;&#30340;&#20540;&#37117;&#26159;&#21807;&#19968;&#30340;&#12290;&#36825;&#26377;&#21161;&#20110;&#32500;&#25252;&#25968;&#25454;&#23436;&#25972;&#24615;&#21644;&#21487;&#20197;&#25552;&#39640;&#25628;&#32034;&#24615;&#33021;&#65292;&#20174;&#32780;&#20943;&#23569;&#37325;&#22797;&#39033;&#12290;<\/p><h2>&#20351;&#29992;&#36801;&#31227;&#28155;&#21152;&#21807;&#19968;&#32422;&#26463;<\/h2><p>&#22312;Laravel&#20013;&#65292;&#36801;&#31227;&#26159;PHP&#31867;&#65292;&#29992;&#20110;&#24110;&#21161;&#24744;&#38543;&#30528;&#26102;&#38388;&#31649;&#29702;&#25968;&#25454;&#24211;&#27169;&#24335;&#30340;&#21464;&#21270;&#12290;&#35201;&#28155;&#21152;&#19968;&#20010;&#21807;&#19968;&#32422;&#26463;&#65292;&#35831;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#36801;&#31227;&#25110;&#20462;&#25913;&#29616;&#26377;&#30340;&#19968;&#20010;&#12290;<\/p><h3>&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#36801;&#31227;&#25805;&#20316;&#12290;<\/h3><p>&#20026;&#20102;&#20026;&#28155;&#21152;&#21807;&#19968;&#32422;&#26463;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#36801;&#31227;&#65292;&#20320;&#21487;&#20197;&#36816;&#34892;&#20197;&#19979; Artisan &#21629;&#20196;&#65306;<\/p><pre><code>php artisan make:migration add_unique_constraint_to_users_table --table=users\n<\/code><\/pre><p>&#35813;&#21629;&#20196;&#20250;&#29983;&#25104;&#19968;&#20010;&#36801;&#31227;&#25991;&#20214;&#22312;&#12290;<code>database\/migrations<\/code>&#30446;&#24405;&#12290;&#25171;&#24320;&#29983;&#25104;&#30340;&#25991;&#20214;&#65292;&#28982;&#21518;&#22312;&#20854;&#20013;&#12290;<code>up<\/code>&#26041;&#27861;&#65292;&#20351;&#29992;&#23427;&#12290;<code>unique<\/code>&#22312;schema&#26500;&#24314;&#22120;&#19978;&#26041;&#27861;&#65306;<\/p><pre><code>public function up()\n{\n    Schema::table('users', function (Blueprint $table) {\n        $table-&gt;string('email')-&gt;unique();\n    });\n}\n<\/code><\/pre><p>&#36825;&#27573;&#20195;&#30721;&#29255;&#27573;&#20026;&#34920;&#28155;&#21152;&#20102;&#19968;&#20010;&#21807;&#19968;&#32422;&#26463;&#12290;<code>email<\/code>&#23545;&#19981;&#36215;&#65292;&#25105;&#26080;&#27861;&#29702;&#35299;&#36825;&#21477;&#35805;&#30340;&#21547;&#20041;&#65292;&#35831;&#24744;&#37325;&#26032;&#25551;&#36848;&#24744;&#30340;&#38382;&#39064;&#25110;&#25552;&#20379;&#26356;&#22810;&#30340;&#19978;&#19979;&#25991;&#20449;&#24687;&#12290;<code>users<\/code>&#34920;&#26684;&#12290;&#35201;&#24212;&#29992;&#36801;&#31227;&#65292;&#35831;&#36816;&#34892;&#65306;<\/p><pre><code>php artisan migrate\n<\/code><\/pre><p>&#19978;&#36848;&#21629;&#20196;&#20250;&#20462;&#25913;&#34920;&#24182;&#28155;&#21152;&#21807;&#19968;&#32422;&#26463;&#12290;&#35831;&#27880;&#24847;&#65292;&#22914;&#26524;&#35813;&#21015;&#30340;&#34920;&#20013;&#24050;&#32463;&#23384;&#22312;&#37325;&#22797;&#20540;&#65292;&#21017;&#36801;&#31227;&#36807;&#31243;&#23558;&#22833;&#36133;&#65292;&#24182;&#19988;&#24744;&#38656;&#35201;&#22312;&#24212;&#29992;&#21807;&#19968;&#32422;&#26463;&#20043;&#21069;&#35299;&#20915;&#36825;&#20123;&#37325;&#22797;&#20540;&#12290;<\/p><h3>&#20462;&#25913;&#29616;&#26377;&#36801;&#31227;&#25805;&#20316;<\/h3><p>&#22914;&#26524;&#20320;&#26356;&#20542;&#21521;&#20110;&#20462;&#25913;&#29616;&#26377;&#30340;&#36801;&#31227;&#32780;&#19981;&#26159;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#65292;&#21487;&#20197;&#22312;&#36801;&#31227;&#20013;&#30452;&#25509;&#28155;&#21152;&#21807;&#19968;&#32034;&#24341;&#12290;<code>up<\/code>&#35813;&#36801;&#31227;&#30340;&#26041;&#27861;&#65292;&#23601;&#20687;&#19978;&#19968;&#20010;&#20363;&#23376;&#19968;&#26679;&#65306;<\/p><pre><code>public function up()\n{\n    \/\/ ... existing columns\n\n    $table-&gt;string('username')-&gt;unique();\n}\n<\/code><\/pre><p>&#36825;&#23558;&#20026;&#34920;&#28155;&#21152;&#19968;&#20010;&#21807;&#19968;&#32422;&#26463;&#12290;<code>username<\/code>&#26639;&#30446;&#12290;<\/p><h2>&#22312;&#22810;&#20010;&#21015;&#19978;&#21019;&#24314;&#21807;&#19968;&#32034;&#24341;&#12290;<\/h2><p>&#24744;&#21487;&#20197;&#20256;&#36882;&#19968;&#20010;&#25968;&#32452;&#26469;&#24378;&#21046;&#22312;&#22810;&#20010;&#21015;&#19978;&#23454;&#29616;&#21807;&#19968;&#24615;&#12290;<code>unique<\/code>&#26041;&#27861;&#65306;<\/p><pre><code>public function up()\n{\n    Schema::table('orders', function (Blueprint $table) {\n        $table-&gt;unique(['user_id', 'product_id']);\n    });\n}\n<\/code><\/pre><p>&#36825;&#23558;&#20250;&#21019;&#24314;&#19968;&#20010;&#22797;&#21512;&#30340;&#21807;&#19968;&#32034;&#24341;&#22312;&#19978;&#12290;<code>user_id<\/code>and &#26159;&ldquo;&#24182;&#19988;&rdquo;&#30340;&#24847;&#24605;&#12290;<code>product_id<\/code>&#21015;&#65292;&#30830;&#20445;&#27599;&#20010;&#29992;&#25143;&#21482;&#33021;&#26377;&#19968;&#20010;&#35746;&#21333;&#23545;&#24212;&#19968;&#20010;&#20135;&#21697;&#12290;<\/p><h2>&#33258;&#23450;&#20041;&#32034;&#24341;&#21517;&#31216;&#21644;&#21024;&#38500;&#32034;&#24341;<\/h2><p>&#20320;&#21487;&#20197;&#36890;&#36807;&#20256;&#36882;&#31532;&#20108;&#20010;&#21442;&#25968;&#26469;&#25351;&#23450;&#33258;&#23450;&#20041;&#32034;&#24341;&#21517;&#31216;&#12290;<code>unique<\/code>&#26041;&#27861;&#65306;<\/p><pre><code>$table-&gt;string('email')-&gt;unique('custom_email_unique');\n<\/code><\/pre><p>&#35201;&#21024;&#38500;&#19968;&#20010;&#21807;&#19968;&#32422;&#26463;\/&#32034;&#24341;&#65292;&#24744;&#38656;&#35201;&#25351;&#23450;&#20854;&#21517;&#31216;&#65306;<\/p><pre><code>$table-&gt;dropUnique('custom_email_unique');<\/code><\/pre><h2>&#20351;&#29992;&#27169;&#22411;&#20107;&#20214;&#26469;&#24378;&#21046;&#25191;&#34892;&#21807;&#19968;&#24615;&#32422;&#26463;<\/h2><p>&#21478;&#19968;&#31181;&#38450;&#27490;&#37325;&#22797;&#35760;&#24405;&#30340;&#26041;&#27861;&#26159;&#22312;&#24212;&#29992;&#31243;&#24207;&#32423;&#21035;&#20351;&#29992;&#27169;&#22411;&#20107;&#20214;&#26469;&#24378;&#21046;&#25191;&#34892;&#21807;&#19968;&#24615;&#65306;<\/p><pre><code>class User extends Model\n{\n    protected static function boot()\n    {\n        parent::boot();\n\n        static::creating(function ($user) {\n            if (User::where('email', $user-&gt;email)-&gt;exists()) {\n                throw new \\[Exception('Email already exists.');\n            }\n    });\n}\n<\/code><\/pre><p>&#36825;&#20010;&#29255;&#27573;&#20250;&#26816;&#26597;&#32473;&#23450;&#30005;&#23376;&#37038;&#20214;&#30340;&#29992;&#25143;&#26159;&#21542;&#24050;&#32463;&#23384;&#22312;&#65292;&#28982;&#21518;&#20877;&#21019;&#24314;&#26032;&#30340;&#29992;&#25143;&#12290;&#20294;&#26159;&#65292;&#35831;&#27880;&#24847;&#65292;&#36825;&#31181;&#26041;&#27861;&#23481;&#26131;&#21463;&#21040;&#31454;&#24577;&#26465;&#20214;&#30340;&#24433;&#21709;&#65292;&#24182;&#19981;&#24212;&#34987;&#29992;&#20316;&#25968;&#25454;&#24211;&#32423;&#21035;&#30340;&#21807;&#19968;&#32422;&#26463;&#26469;&#26367;&#20195;&#12290;<\/p><h2>&#22788;&#29702;&#37325;&#22797;&#25968;&#25454;<\/h2><p>&#22312;&#28155;&#21152;&#21807;&#19968;&#32422;&#26463;&#20043;&#21069;&#65292;&#24744;&#24212;&#35813;&#35299;&#20915;&#20219;&#20309;&#29616;&#26377;&#37325;&#22797;&#25968;&#25454;&#30340;&#38382;&#39064;&#12290;&#36825;&#37324;&#26377;&#19968;&#20010;&#31034;&#20363;&#26469;&#28165;&#29702;&#37325;&#22797;&#30340;&#30005;&#23376;&#37038;&#20214;&#65306;<\/p><pre><code>User::groupBy('email')-&gt;havingRaw('COUNT(*) &gt; 1')-&gt;get()-&gt;each(function ($user) {\n    User::where('email', $user-&gt;email)-&gt;orderBy('id')-&gt;skip(1)-&gt;take(PHP_INT_MAX)-&gt;delete();\n});\n<\/code><\/pre><p>&#36825;&#20250;&#20445;&#30041;&#31532;&#19968;&#27425;&#20986;&#29616;&#30340;&#26465;&#30446;&#65292;&#21024;&#38500;&#21518;&#32493;&#30340;&#37325;&#22797;&#26465;&#30446;&#12290;&#23436;&#25104;&#28165;&#29702;&#21518;&#65292;&#20320;&#21487;&#20197;&#23433;&#20840;&#22320;&#28155;&#21152;&#21807;&#19968;&#32422;&#26463;&#12290;<\/p><h2>&#22788;&#29702;&#21807;&#19968;&#32422;&#26463;&#36829;&#21453;&#30340;&#24773;&#20917;&#12290;<\/h2><p>&#24403;&#20986;&#29616;UNIQUE&#32422;&#26463;&#36829;&#21453;&#26102;&#65292;Laravel&#20250;&#25243;&#20986;&#19968;&#20010;&#24322;&#24120;&#12290;<code>IlluminateDatabaseQueryException<\/code>&#20320;&#21487;&#20197;&#25429;&#33719;&#36825;&#20010;&#24322;&#24120;&#26469;&#20248;&#38597;&#22320;&#22788;&#29702;&#37325;&#22797;&#39033;&#65306;<\/p><pre><code>try {\n    \/\/ Code that might violate unique constraint\n} catch (\\[Illuminate\\Database\\QueryException $exception) {\n    if ($exception-&gt;errorInfo[1] == 1062) {\n        \/\/ Handle the duplicate key error\n    }\n}\n<\/code><\/pre><p>&#27880;&#24847;&#65292;&#38169;&#35823;&#20195;&#30721;1062&#23545;&#24212;&#20110;MySQL&#20013;&#30340;&#21807;&#19968;&#32422;&#26463;&#30340;&#37325;&#22797;&#26465;&#30446;&#12290;&#36825;&#21487;&#33021;&#22240;&#25968;&#25454;&#24211;&#31995;&#32479;&#32780;&#24322;&#12290;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>&#24635;&#32467;&#26469;&#35828;&#65292;Laravel&#30340;Eloquent ORM&#21644;Schema Builder&#25552;&#20379;&#20102;&#31649;&#29702;&#25968;&#25454;&#24211;&#27169;&#24335;&#20013;&#30340;&#21807;&#19968;&#32422;&#26463;&#30340;&#31616;&#21333;&#26041;&#27861;&#12290;&#26080;&#35770;&#26159;&#21019;&#24314;&#26032;&#30340;&#36801;&#31227;&#36824;&#26159;&#20462;&#25913;&#29616;&#26377;&#30340;&#19968;&#20010;&#65292;&#28155;&#21152;&#25110;&#21024;&#38500;&#21807;&#19968;&#32034;&#24341;&#26469;&#32500;&#25252;&#25968;&#25454;&#23436;&#25972;&#24615;&#21644;&#24615;&#33021;&#37117;&#24456;&#23481;&#26131;&#12290;&#34429;&#28982;&#27169;&#22411;&#20107;&#20214;&#25552;&#20379;&#20102;&#19968;&#31181;&#22312;&#24212;&#29992;&#31243;&#24207;&#32423;&#21035;&#22788;&#29702;&#37325;&#22797;&#39033;&#30340;&#26041;&#27861;&#65292;&#20294;&#27809;&#26377;&#20219;&#20309;&#19996;&#35199;&#33021;&#26367;&#20195;&#25968;&#25454;&#24211;&#32423;&#32422;&#26463;&#30340;&#24378;&#22823;&#24615;&#21644;&#20445;&#35777;&#24615;&#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 &#30340; Eloquent &#27169;&#22411;&#20013;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992; <code>unique<\/code> &#20851;&#38190;&#23383;&#26469;&#23450;&#20041;&#21807;&#19968;&#32422;&#26463;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#21019;&#24314;&#19968;&#20010;&#21807;&#19968;&#30340;&#37038;&#31665;&#23383;&#27573;&#65306;<\/p>\n<pre><code class=\"language-php\">use IlluminateSupportFacadesDB;\n\nclass User extends Model {\n    protected $table = 'users';\n\n    public function validate()\n    {\n        return [\n            'email' =&gt; ['required', 'string', 'email', 'unique:users,email'],\n        ];\n    }\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#20026; <code>User<\/code> &#31867;&#30340; <code>email<\/code> &#23383;&#27573;&#35774;&#32622;&#20102; <code>unique<\/code> &#38480;&#21046;&#12290;&#36825;&#24847;&#21619;&#30528;&#24403;&#29992;&#25143;&#23581;&#35797;&#25554;&#20837;&#19968;&#20010;&#26032;&#30340;&#30005;&#23376;&#37038;&#20214;&#26102;&#65292;&#22914;&#26524;&#35813;&#30005;&#23376;&#37038;&#20214;&#24050;&#23384;&#22312;&#65292;&#21017;&#23558;&#25243;&#20986;&#24322;&#24120;&#12290;<\/p>\n<p>&#22914;&#26524;&#20320;&#24819;&#35201;&#26356;&#20855;&#20307;&#30340;&#24110;&#21161;&#65292;&#35831;&#21578;&#35785;&#25105;&#20320;&#22312;&#29305;&#23450;&#24773;&#20917;&#19979;&#36935;&#21040;&#30340;&#38382;&#39064;&#25110;&#32773;&#38656;&#35201;&#20160;&#20040;&#26679;&#30340;&#20449;&#24687;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#22312; Laravel &#20013;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992; Eloquent &#27169;&#22411;&#26469;&#23450;&#20041;&#34920;&#038;..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[44],"tuisongtax":[],"class_list":["post-983","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\/983","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=983"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=983"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=983"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=983"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}