{"id":1002,"date":"2025-06-12T04:37:22","date_gmt":"2025-06-11T20:37:22","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/1002.html"},"modified":"2025-06-12T04:37:22","modified_gmt":"2025-06-11T20:37:22","slug":"laravel-eloquent%ef%bc%9aattach%e3%80%81detach-%e5%92%8c-sync-%e6%96%b9%e6%b3%95","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/1002.html","title":{"rendered":"Laravel Eloquent\uff1aattach()\u3001detach() \u548c sync() \u65b9\u6cd5"},"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>&#12298;Laravel Eloquent &#20013;&#30340; attach()&#12289;detach() &#21644; sync() &#26041;&#27861;&#12299;<\/p>\n<p>&#22312; Laravel &#26694;&#26550;&#20013;&#65292;Eloquent &#26159;&#29992;&#20110;&#19982;&#25968;&#25454;&#24211;&#36827;&#34892;&#20132;&#20114;&#30340;&#24378;&#22823; ORM&#65288;&#23545;&#35937;&#20851;&#31995;&#26144;&#23556;&#65289;&#12290;<code>attach()<\/code>&#12289;<code>detach()<\/code> &#21644; <code>sync()<\/code> &#26041;&#27861;&#26159; Eloquent &#20013;&#29992;&#20110;&#22788;&#29702;&#27169;&#22411;&#20851;&#32852;&#30340;&#37325;&#35201;&#26041;&#27861;&#12290;&#19979;&#38754;&#25105;&#23558;&#35814;&#32454;&#20171;&#32461;&#36825;&#19977;&#31181;&#26041;&#27861;&#65292;&#24182;&#36890;&#36807;&#31034;&#20363;&#20195;&#30721;&#26469;&#35828;&#26126;&#23427;&#20204;&#30340;&#24037;&#20316;&#21407;&#29702;&#12290;<\/p>\n<h3>1. attach()<\/h3>\n<p><code>attach()<\/code> &#26041;&#27861;&#29992;&#20110;&#23558;&#19968;&#20010;&#26032;&#30340;&#20851;&#32852;&#28155;&#21152;&#21040;&#27169;&#22411;&#23454;&#20363;&#20013;&#12290;&#22914;&#26524;&#20851;&#32852;&#24050;&#32463;&#23384;&#22312;&#65292;&#21017;&#19981;&#20250;&#37325;&#22797;&#28155;&#21152;&#12290;<\/p>\n<pre><code class=\"language-php\">use AppUser;\nuse AppPost;\n\n$user = User::find(1);\n$post = Post::find(2);\n\n\/\/ &#28155;&#21152;&#20851;&#32852;\n$user-&gt;posts()-&gt;attach($post-&gt;id);<\/code><\/pre>\n<h3>2. detach()<\/h3>\n<p><code>detach()<\/code> &#26041;&#27861;&#29992;&#20110;&#20174;&#27169;&#22411;&#23454;&#20363;&#20013;&#31227;&#38500;&#19968;&#20010;&#24050;&#26377;&#30340;&#20851;&#32852;&#12290;<\/p>\n<pre><code class=\"language-php\">use AppUser;\nuse AppPost;\n\n$user = User::find(1);\n$post = Post::find(2);\n\n\/\/ &#31227;&#38500;&#20851;&#32852;\n$user-&gt;posts()-&gt;detach($post-&gt;id);<\/code><\/pre>\n<h3>3. sync()<\/h3>\n<p><code>sync()<\/code> &#26041;&#27861;&#29992;&#20110;&#26356;&#26032;&#27169;&#22411;&#23454;&#20363;&#30340;&#20851;&#32852;&#12290;&#23427;&#20250;&#26681;&#25454;&#20256;&#20837;&#30340;&#25968;&#32452;&#26469;&#26356;&#26032;&#20851;&#32852;&#12290;&#22914;&#26524;&#20256;&#20837;&#30340;&#25968;&#32452;&#20026;&#31354;&#65292;&#21017;&#20250;&#21024;&#38500;&#25152;&#26377;&#29616;&#26377;&#30340;&#20851;&#32852;&#12290;<\/p>\n<pre><code class=\"language-php\">use AppUser;\nuse AppPost;\n\n$user = User::find(1);\n$post = Post::find(2);\n\n\/\/ &#26356;&#26032;&#20851;&#32852;\n$user-&gt;posts()-&gt;sync([$post-&gt;id]);<\/code><\/pre>\n<h3>&#31034;&#20363;&#20195;&#30721;<\/h3>\n<p>&#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010; <code>User<\/code> &#27169;&#22411;&#21644;&#19968;&#20010; <code>Post<\/code> &#27169;&#22411;&#65292;&#20854;&#20013; <code>User<\/code> &#27169;&#22411;&#21487;&#20197;&#26377;&#22810;&#20010; <code>Post<\/code> &#27169;&#22411;&#20851;&#32852;&#12290;<\/p>\n<h4>&#21019;&#24314;&#34920;&#32467;&#26500;<\/h4>\n<p>&#39318;&#20808;&#65292;&#21019;&#24314;&#20004;&#20010;&#27169;&#22411;&#23545;&#24212;&#30340;&#25968;&#25454;&#24211;&#34920;&#65306;<\/p>\n<pre><code class=\"language-sql\">-- Create the users table\nCREATE TABLE users (\n    id INT AUTO_INCREMENT PRIMARY KEY,\n    name VARCHAR(255) NOT NULL\n);\n\n-- Create the posts table\nCREATE TABLE posts (\n    id INT AUTO_INCREMENT PRIMARY KEY,\n    title VARCHAR(255) NOT NULL\n);<\/code><\/pre>\n<h4>&#21019;&#24314;&#27169;&#22411;<\/h4>\n<p>&#22312; <code>app\/User.php<\/code> &#25991;&#20214;&#20013;&#23450;&#20041; <code>User<\/code> &#27169;&#22411;&#65306;<\/p>\n<pre><code class=\"language-php\">namespace App;\n\nuse IlluminateDatabaseEloquentModel;\n\nclass User extends Model\n{\n    public function posts()\n    {\n        return $this-&gt;belongsToMany(Post::class);\n    }\n}<\/code><\/pre>\n<p>&#22312; <code>app\/Post.php<\/code> &#25991;&#20214;&#20013;&#23450;&#20041; <code>Post<\/code> &#27169;&#22411;&#65306;<\/p>\n<pre><code class=\"language-php\">namespace App;\n\nuse IlluminateDatabaseEloquentModel;\n\nclass Post extends Model\n{\n    public function user()\n    {\n        return $this-&gt;belongsTo(User::class);\n    }\n}<\/code><\/pre>\n<h4>&#31034;&#20363;&#25805;&#20316;<\/h4>\n<pre><code class=\"language-php\">use AppUser;\nuse AppPost;\n\n\/\/ &#21019;&#24314;&#29992;&#25143;&#21644;&#24086;&#23376;\n$user = new User(['name' =&gt; 'John Doe']);\n$post = new Post(['title' =&gt; 'First Post']);\n\n$user-&gt;save();\n$post-&gt;save();\n\n\/\/ &#28155;&#21152;&#20851;&#32852;\n$user-&gt;posts()-&gt;attach($post-&gt;id);\n\n\/\/ &#26356;&#26032;&#20851;&#32852;\n$user-&gt;posts()-&gt;sync([$post-&gt;id]);\n\n\/\/ &#31227;&#38500;&#20851;&#32852;\n$user-&gt;posts()-&gt;detach($post-&gt;id);<\/code><\/pre>\n<p>&#36890;&#36807;&#36825;&#20123;&#26041;&#27861;&#65292;&#20320;&#21487;&#20197;&#28789;&#27963;&#22320;&#31649;&#29702;&#27169;&#22411;&#20043;&#38388;&#30340;&#20851;&#32852;&#20851;&#31995;&#12290;&#24076;&#26395;&#36825;&#20010;&#31034;&#20363;&#33021;&#24110;&#21161;&#20320;&#26356;&#22909;&#22320;&#29702;&#35299;&#22914;&#20309;&#20351;&#29992; Laravel Eloquent &#20013;&#30340;&#20851;&#32852;&#26041;&#27861;&#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><h3>&#27010;&#35272;<\/h3><p>&#19982; Laravel &#30340; Eloquent ORM&#65288;&#23545;&#35937;&#20851;&#31995;&#26144;&#23556;&#65289;&#19968;&#36215;&#24037;&#20316;&#65292;&#22788;&#29702;&#25968;&#25454;&#24211;&#20043;&#38388;&#30340;&#20851;&#31995;&#21464;&#24471;&#31616;&#21333;&#32780;&#20248;&#38597;&#12290;&#23427;&#20026;&#19982;&#30456;&#20851;&#27169;&#22411;&#20132;&#20114;&#25552;&#20379;&#30340;&#35768;&#22810;&#24378;&#22823;&#26041;&#27861;&#20013;&#65292;&#29305;&#21035;&#20540;&#24471;&#27880;&#24847;&#30340;&#26159;<code>attach()<\/code>&#22909;&#30340;&#65292;&#35831;&#25552;&#20379;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<code>detach()<\/code>&#21644;&#25105;&#25171;&#25307;&#21628;&#21543;&#12290;<code>sync()<\/code>&#22312;&#26412;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#23558;&#25506;&#35752;&#36825;&#20123;&#26041;&#27861;&#22914;&#20309;&#29992;&#20110;&#31649;&#29702;&#22810;&#23545;&#22810;&#20851;&#31995;&#30340;&#31034;&#20363;&#12290;<\/p><p>&#22312;&#28145;&#20837;&#20195;&#30721;&#31034;&#20363;&#20043;&#21069;&#65292;&#24744;&#24212;&#35813;&#23545; Eloquent &#20851;&#31995;&#26377;&#19968;&#20010;&#22522;&#30784;&#30340;&#29702;&#35299;&#12290;&#19968;&#23545;&#22810;&#20851;&#31995;&#26159;&#25351;&#19968;&#20010;&#27169;&#22411;&#21487;&#20197;&#19982;&#21478;&#19968;&#20010;&#27169;&#22411;&#30340;&#22810;&#20010;&#23454;&#20363;&#30456;&#20851;&#32852;&#65292;&#21453;&#20043;&#20134;&#28982;&#12290;&#20363;&#22914;&#65292;&#19968;&#20010;&#29992;&#25143;&#21487;&#20197;&#20851;&#32852;&#21040;&#22810;&#20010;&#24086;&#23376;&#65292;&#32780;&#19968;&#20010;&#24086;&#23376;&#20063;&#21487;&#20197;&#20851;&#32852;&#21040;&#22810;&#20010;&#29992;&#25143;&#12290;<code>User<\/code>&#21487;&#33021;&#23646;&#20110;&#35768;&#22810;&#20154;&#12290;<code>Role<\/code>&#22909;&#30340;&#65292;&#27491;&#22312;&#20026;&#24744;&#36827;&#34892;&#32763;&#35793;&#12290;<code>Role<\/code>&#21487;&#20197;&#19982;&#35768;&#22810;&#30456;&#20851;&#32852;&#12290;<code>User<\/code>&#25910;&#21040;&#12290;<\/p><h3>&#35774;&#32622;&#22810;&#23545;&#22810;&#20851;&#31995;<\/h3><pre><code>\/\/ User model\npublic function roles() {\n    return $this-&gt;belongsToMany(Role::class);\n}\n\n\/\/ Role model\npublic function users() {\n    return $this-&gt;belongsToMany(User::class);\n}\n<\/code><\/pre><p>&#36890;&#24120;&#20250;&#26377;&#19968;&#20010;pivot&#34920;&#19982;&#20851;&#31995;&#30456;&#20851;&#32852;&#12290;&#23545;&#20110;&#25105;&#20204;&#30340;&#24773;&#20917;&#65292;&#25105;&#20250;&#25552;&#20379;&#19968;&#20010;pivot&#34920;&#12290;<code>User<\/code>and &#26159;&#20013;&#25991;&#20013;&#30340;&ldquo;&#21644;&rdquo;&#65292;&#29992;&#20110;&#36830;&#25509;&#24182;&#21015;&#30340;&#35789;&#35821;&#12289;&#30701;&#35821;&#25110;&#21477;&#23376;&#65292;&#34920;&#31034;&#20004;&#32773;&#20043;&#38388;&#30340;&#20851;&#31995;&#12290;&#20363;&#22914;&#65292;&ldquo;&#25105;&#21916;&#27426;&#30475;&#30005;&#24433;&#21644;&#21548;&#38899;&#20048;&#12290;&rdquo;&#36825;&#37324;&#30340;&ldquo;&#21644;&rdquo;&#23601;&#26159;&#29992;&#26469;&#36830;&#25509;&#20004;&#20010;&#21160;&#20316;&#30340;&#12290;<code>Role<\/code>&#20363;&#22914;&#65292;&#36825;&#21487;&#33021;&#23601;&#26159;&hellip;&hellip;<code>role_user<\/code>&#26700;&#23376;&#12290;<\/p><h3>&#20351;&#29992;attach()<\/h3><p>&#23545;&#19981;&#36215;&#65292;&#25105;&#19981;&#26126;&#30333;&#24744;&#30340;&#38382;&#39064;&#12290;<code>attach()<\/code>&#26041;&#27861;&#29992;&#20110;&#22312;&#36879;&#35270;&#34920;&#19978;&#21019;&#24314;&#26032;&#35760;&#24405;&#65292;&#20174;&#32780;&#26377;&#25928;&#38142;&#25509;&#20004;&#20010;&#27169;&#22411;&#12290;<\/p><pre><code>$user = User::find(1);\n$user-&gt;roles()-&gt;attach($roleId);\n<\/code><\/pre><p>&#36825;&#23558;&#20250;&#22312;&#34920;&#26684;&#20013;&#25554;&#20837;&#19968;&#34892;&#12290;<code>role_user<\/code>.pivot table with the user&#8217;s ID and the role&#8217;s ID passed as<code>$roleId<\/code>&#22914;&#26524;&#24819;&#19968;&#27425;&#25346;&#22810;&#20010;&#35282;&#33394;&#65292;&#21487;&#20197;&#20256;&#36882;&#19968;&#20010;&#35282;&#33394;ID&#25968;&#32452;&#12290;<\/p><pre><code>$user-&gt;roles()-&gt;attach([$roleId1, $roleId2, $roleId3]);\n<\/code><\/pre><h3>&#20351;&#29992;detach()<\/h3><p>&#30456;&#21453;&#30340;<code>attach()<\/code>&#22909;&#30340;&#65292;&#35831;&#25552;&#20379;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<code>detach()<\/code>&#36890;&#36807;&#21024;&#38500;.pivot&#34920;&#20013;&#30340;&#30456;&#24212;&#35760;&#24405;&#26469;&#35299;&#38500;&#20004;&#20010;&#27169;&#22411;&#20043;&#38388;&#30340;&#20851;&#31995;&#12290;<\/p><pre><code>$user-&gt;roles()-&gt;detach($roleId);\n<\/code><\/pre><p>&#24744;&#21487;&#20197;&#20256;&#36882;&#19968;&#20010;&#21253;&#21547;&#22810;&#20010;ID&#30340;&#25968;&#32452;&#26469;&#35299;&#32465;&#22810;&#20010;&#35282;&#33394;&#65292;&#25110;&#32773;&#35843;&#29992;&#35813;&#26041;&#27861;&#12290;<code>detach()<\/code>&#22312;&#27809;&#26377;&#20854;&#20182;&#21442;&#25968;&#30340;&#24773;&#20917;&#19979;&#65292;&#21487;&#20197;&#35299;&#38500;&#25152;&#26377;&#30456;&#20851;&#30340;&#35282;&#33394;&#32465;&#23450;&#12290;<\/p><pre><code>$user-&gt;roles()-&gt;detach([$roleId1, $roleId2]);\n$user-&gt;roles()-&gt;detach(); \/\/ Detaches all roles\n<\/code><\/pre><h3>&#20351;&#29992;sync()&#12290;<\/h3><p>&#23545;&#19981;&#36215;&#65292;&#25105;&#26080;&#27861;&#29702;&#35299;&#24744;&#30340;&#38382;&#39064;&#65292;&#35831;&#37325;&#26032;&#25551;&#36848;&#19968;&#19979;&#24744;&#24819;&#35201;&#34920;&#36798;&#30340;&#20869;&#23481;&#12290;<code>sync()<\/code>&#35813;&#26041;&#27861;&#29992;&#20110;&#30830;&#20445;&#27169;&#22411;&#20165;&#19982;&#29305;&#23450;&#30340;ID&#21015;&#34920;&#30456;&#20851;&#32852;&#65292;&#20174;&#32780;&#21024;&#38500;&#20854;&#20182;&#20219;&#20309;&#20851;&#32852;&#12290;&#24403;&#26356;&#26032;&#27169;&#22411;&#26102;&#65292;&#22914;&#26524;&#24744;&#24076;&#26395;&#35774;&#32622;&#26032;&#30340;&#30456;&#20851;ID&#21015;&#34920;&#32780;&#19981;&#38656;&#35201;&#39318;&#20808;&#35843;&#29992;&#27492;&#26041;&#27861;&#65292;&#21017;&#29305;&#21035;&#26377;&#29992;&#12290;<code>detach()<\/code>&#28982;&#21518;<code>attach()<\/code>&#23545;&#20110;&#26032;&#30340;&#12290;<\/p><pre><code>$user-&gt;roles()-&gt;sync([$roleId1, $roleId3]);\n<\/code><\/pre><p>&#23545;&#19981;&#36215;&#65292;&#25105;&#19981;&#22826;&#26126;&#30333;&#24744;&#30340;&#24847;&#24605;&#65292;&#35831;&#24744;&#37325;&#26032;&#25551;&#36848;&#19968;&#19979;&#12290;<code>sync()<\/code>&#26041;&#27861;&#23558;&#22788;&#29702;&#31227;&#38500;&#32473;&#23450;&#25968;&#32452;&#20043;&#22806;&#30340;&#20219;&#20309;&#29616;&#26377;&#32852;&#31995;&#65292;&#20197;&#21450;&#28155;&#21152;&#26032;&#30340;&#32852;&#31995;&#12290;&#22914;&#26524;&#20320;&#24819;&#35201;&#20445;&#30041;&#29616;&#26377;&#30340;&#32852;&#31995;&#24182;&#21482;&#28155;&#21152;&#26032;&#30340;&#20154;&#32780;&#19981;&#21024;&#38500;&#20219;&#20309;&#20154;&#65292;&#35831;&#20351;&#29992;<code>syncWithoutDetaching()<\/code>&#22909;&#30340;&#65292;&#35831;&#25552;&#20379;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<\/p><pre><code>$user-&gt;roles()-&gt;syncWithoutDetaching($roleId4);\n<\/code><\/pre><p>&#36825;&#23558;&#20445;&#30041;&#29616;&#26377;&#35282;&#33394;&#65292;&#22914;&#26524;&#26410;&#23384;&#22312;&#21017;&#28155;&#21152;&#35282;&#33394;4&#12290;&#24403;&#20351;&#29992;attach()&#20256;&#36882;&#38468;&#21152;&#25968;&#25454;&#26102;&#65292;&#21487;&#20197;&#36890;&#36807;&#21457;&#36865;&#31532;&#20108;&#20010;&#21442;&#25968;&#20316;&#20026;&#20851;&#32852;&#25968;&#32452;&#26469;&#23454;&#29616;&#12290;<\/p><pre><code>$user-&gt;roles()-&gt;attach($roleId, ['expires' =&gt; $expiresDate]);\n<\/code><\/pre><h3>&#22788;&#29702;&#21516;&#27493;&#20107;&#20214;<\/h3><p>Laravel &#21457;&#24067;&#20102;&#22810;&#20010;&#20107;&#20214;&#65292;&#24403;&#27169;&#22411;&#20851;&#31995;&#19978;&#30340;&#38468;&#20214;&#25110;&#33073;&#38468;&#25805;&#20316;&#21457;&#29983;&#26102;&#12290;&#36825;&#20123;&#20107;&#20214;&#23601;&#20687;&#36825;&#26679;&#65306;<code>attached<\/code>&#22909;&#30340;&#65292;&#35831;&#21457;&#36865;&#20320;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<code>updated<\/code>&#21644;&#20320;&#26377;&#20160;&#20040;&#20107;&#21527;&#65311;<code>detached<\/code>&#23427;&#21487;&#20197;&#29992;&#20110;&#22312;&#36825;&#20123;&#25805;&#20316;&#21457;&#29983;&#26102;&#25191;&#34892;&#38468;&#21152;&#36923;&#36753;&#25110;&#25968;&#25454;&#23436;&#25972;&#24615;&#20219;&#21153;&#12290;<\/p><p>&#20026;&#20102;&#30417;&#21548;&#36825;&#20123;&#20107;&#20214;&#65292;&#21487;&#20197;&#22312;&#24744;&#30340;&#27169;&#22411;&#19978;&#23450;&#20041;&#26041;&#27861;&#65306;<\/p><pre><code>protected $dispatchesEvents = [\n    'attached' =&gt; UserAttachedToRole::class,\n    'detached' =&gt; UserDetachedFromRole::class,\n];\n<\/code><\/pre><h3>&#32467;&#35770;&#12290;<\/h3><p><code>attach()<\/code>&#22909;&#30340;&#65292;&#35831;&#21457;&#36865;&#20320;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<code>detach()<\/code>&#21644;&#20320;&#26377;&#20160;&#20040;&#38382;&#39064;&#65311;<code>sync()<\/code>Laravel&#30340;Eloquent ORM&#20013;&#30340;&#36825;&#20123;&#26041;&#27861;&#23545;&#20110;&#31649;&#29702;&#35768;&#22810;&#21040;&#35768;&#22810;&#30340;&#20851;&#31995;&#38750;&#24120;&#26377;&#29992;&#12290;&#26377;&#20102;&#36825;&#20123;&#26041;&#27861;&#65292;&#20320;&#21487;&#20197;&#36731;&#26494;&#26500;&#24314;&#22797;&#26434;&#30340;&#25968;&#25454;&#20851;&#32852;&#24182;&#20197;&#28165;&#26224;&#21644;&#39640;&#25928;&#30340;&#20195;&#30721;&#26041;&#24335;&#32500;&#25252;&#23427;&#20204;&#12290;<\/p><p>&#35760;&#24471;&#20063;&#35201;&#21033;&#29992;Eloquent&#30340;&#22810;&#32500;&#25968;&#25454;&#22788;&#29702;&#33021;&#21147;&#65292;&#22788;&#29702;&#21516;&#27493;&#27963;&#21160;&#20107;&#20214;&#65292;&#30830;&#20445;&#20851;&#31995;&#22312;&#24212;&#29992;&#31243;&#24207;&#20013;&#23481;&#26131;&#31649;&#29702;&#12290;&#23454;&#36341;&#19981;&#21516;&#29616;&#23454;&#19990;&#30028;&#30340;&#22330;&#26223;&#26469;&#26356;&#22909;&#22320;&#29702;&#35299;&#20854;&#21151;&#33021;&#21644;&#29992;&#20363;&#12290;<\/p><p>&#20139;&#21463;&#32534;&#31243;&#65292;&#19981;&#26029;&#25506;&#32034;Laravel&#30340;&#21151;&#33021;&#20197;&#32534;&#20889;&#26356;&#23569;&#30340;&#20195;&#30721;&#20294;&#23436;&#25104;&#26356;&#22810;&#65281;<\/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>Eloquent<\/code> &#26159;&#19968;&#31181; ORM&#65288;&#23545;&#35937;&#20851;&#31995;&#26144;&#23556;&#65289;&#26041;&#24335;&#26469;&#25805;&#20316;&#25968;&#25454;&#24211;&#12290;&#36825;&#20123;&#26041;&#27861; <code>attach()<\/code>&#12289;<code>detach()<\/code> &#21644; <code>sync()<\/code> &#22312;&#22788;&#29702;&#20851;&#32852;&#21644;&#20107;&#20214;&#30417;&#21548;&#26102;&#38750;&#24120;&#26377;&#29992;&#12290;<\/p>\n<h3>attach()<\/h3>\n<ul>\n<li><strong>&#23450;&#20041;<\/strong>&#65306;&#29992;&#20110;&#23558;&#19968;&#20010;&#26032;&#30340;&#20851;&#32852;&#32465;&#23450;&#21040;&#19968;&#20010;&#27169;&#22411;&#12290;<\/li>\n<li>&#31034;&#20363;&#65306;\n<pre><code class=\"language-php\">$model-&gt;attach(new User);<\/code><\/pre><\/li>\n<\/ul>\n<h3>detach()<\/h3>\n<ul>\n<li><strong>&#23450;&#20041;<\/strong>&#65306;&#29992;&#20110;&#20174;&#19968;&#20010;&#27169;&#22411;&#20013;&#21024;&#38500;&#19968;&#20010;&#24050;&#20851;&#32852;&#30340;&#20851;&#32852;&#12290;<\/li>\n<li>&#31034;&#20363;&#65306;\n<pre><code class=\"language-php\">$model-&gt;detach('user');<\/code><\/pre><\/li>\n<\/ul>\n<h3>sync()<\/h3>\n<ul>\n<li><strong>&#23450;&#20041;<\/strong>&#65306;&#29992;&#20110;&#21516;&#27493;&#19968;&#20010;&#27169;&#22411;&#30340;&#25152;&#26377;&#20851;&#32852;&#12290;<\/li>\n<li>&#31034;&#20363;&#65306;\n<pre><code class=\"language-php\">$model-&gt;sync();<\/code><\/pre><\/li>\n<\/ul>\n<h3>&#27880;&#24847;&#20107;&#39033;<\/h3>\n<ol>\n<li>&#24403;&#20351;&#29992; <code>attach()<\/code> &#25110; <code>detach()<\/code> &#26102;&#65292;&#35831;&#30830;&#20445;&#27169;&#22411;&#24050;&#32463;&#23454;&#20363;&#21270;&#24182;&#27491;&#30830;&#37197;&#32622;&#20102;&#20851;&#32852;&#12290;<\/li>\n<li>&#20351;&#29992; <code>sync()<\/code> &#21516;&#27493;&#25152;&#26377;&#20851;&#32852;&#20043;&#21069;&#65292;&#30830;&#20445;&#27809;&#26377;&#20854;&#20182;&#32447;&#31243;&#27491;&#22312;&#26356;&#26032;&#36825;&#20123;&#20851;&#32852;&#12290;<\/li>\n<li>&#22914;&#26524;&#27169;&#22411;&#20013;&#26377;&#22810;&#20010;&#20851;&#32852;&#65292;&#24182;&#19988;&#38656;&#35201;&#21516;&#26102;&#26356;&#26032;&#23427;&#20204;&#65292;&#21487;&#20197;&#32771;&#34385;&#20351;&#29992; <code>updateOrCreate()<\/code> &#25110;&#32773; <code>forceUpdate()<\/code> &#26041;&#27861;&#26469;&#31616;&#21270;&#21516;&#27493;&#36807;&#31243;&#12290;<\/li>\n<\/ol>\n<p>&#20363;&#22914;&#65292;&#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010;&#29992;&#25143;&#27169;&#22411;&#21644;&#19968;&#20010;&#24086;&#23376;&#27169;&#22411;&#65292;&#25105;&#20204;&#38656;&#35201;&#20026;&#27599;&#20010;&#24086;&#23376;&#28155;&#21152;&#19968;&#20010;&#29992;&#25143;&#30340;&#20851;&#32852;&#65306;<\/p>\n<pre><code class=\"language-php\">$user = new User();\n\n$post = new Post($user);\n\n\/\/ Attach the user to the post\n$post-&gt;attach($user);\n\n\/\/ Or, if you want to update or create the user based on the post's data\n$user-&gt;updateOrCreate(['id' =&gt; $post-&gt;userId], ['name' =&gt; 'New Name']);<\/code><\/pre>\n<p>&#36890;&#36807;&#36825;&#31181;&#26041;&#24335;&#65292;&#25105;&#20204;&#21487;&#20197;&#26377;&#25928;&#22320;&#31649;&#29702;&#20851;&#32852;&#21644;&#21516;&#27493;&#25968;&#25454;&#65292;&#32780;&#26080;&#38656;&#25163;&#21160;&#32534;&#20889;&#22797;&#26434;&#30340;&#26597;&#35810;&#21644;&#36923;&#36753;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#12298;Laravel Eloquent &#20013;&#30340; attach()&#12289;detach() &#21644; sync() &#26041;&#27861;&#12299; &#22312; Laravel &#038;#26694..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[44],"tuisongtax":[],"class_list":["post-1002","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\/1002","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=1002"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=1002"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=1002"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=1002"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}