{"id":976,"date":"2025-06-12T04:00:35","date_gmt":"2025-06-11T20:00:35","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/976.html"},"modified":"2025-06-12T04:00:35","modified_gmt":"2025-06-11T20:00:35","slug":"%e5%a6%82%e4%bd%95%e5%9c%a8eloquent%e4%b8%ad%e6%b3%a8%e5%86%8c%e5%92%8c%e4%bd%bf%e7%94%a8%e9%97%ad%e5%8c%85","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/976.html","title":{"rendered":"\u5982\u4f55\u5728Eloquent\u4e2d\u6ce8\u518c\u548c\u4f7f\u7528\u95ed\u5305"},"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;Eloquent&#20013;&#65292;&#38381;&#21253;&#65288;Closure&#65289;&#26159;&#19968;&#31181;&#38750;&#24120;&#24378;&#22823;&#30340;&#24037;&#20855;&#65292;&#21487;&#20197;&#29992;&#20110;&#23450;&#20041;&#22238;&#35843;&#20989;&#25968;&#12289;&#20107;&#20214;&#30417;&#21548;&#22120;&#31561;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#22312;Eloquent&#20013;&#27880;&#20876;&#21644;&#20351;&#29992;&#30340;&#31034;&#20363;&#65306;<\/p>\n<h3>1. &#27880;&#20876;&#38381;&#21253;<\/h3>\n<p>&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#22312;&#27169;&#22411;&#20013;&#23450;&#20041;&#19968;&#20010;&#26041;&#27861;&#26469;&#27880;&#20876;&#38381;&#21253;&#12290;<\/p>\n<pre><code class=\"language-php\">namespace App;\n\nuse IlluminateDatabaseEloquentModel;\nuse Closure;\n\nclass User extends Model\n{\n    public function registerCallback(Closure $callback)\n    {\n        \/\/ &#36825;&#37324;&#20320;&#21487;&#20197;&#23558;&#38381;&#21253;&#23384;&#20648;&#22312;&#19968;&#20010;&#25968;&#32452;&#20013;&#25110;&#20854;&#20182;&#22320;&#26041;\n        $this-&gt;callbacks[] = $callback;\n    }\n\n    public function executeCallbacks()\n    {\n        foreach ($this-&gt;callbacks as $callback) {\n            $callback($this);\n        }\n    }\n}<\/code><\/pre>\n<h3>2. &#20351;&#29992;&#38381;&#21253;<\/h3>\n<p>&#25509;&#19979;&#26469;&#65292;&#20320;&#21487;&#20197;&#36890;&#36807;&#35843;&#29992;<code>registerCallback<\/code>&#26041;&#27861;&#26469;&#27880;&#20876;&#38381;&#21253;&#65292;&#24182;&#22312;&#38656;&#35201;&#26102;&#35843;&#29992;<code>executeCallbacks<\/code>&#26041;&#27861;&#26469;&#25191;&#34892;&#36825;&#20123;&#38381;&#21253;&#12290;<\/p>\n<pre><code class=\"language-php\">$user = new User();\n$user-&gt;registerCallback(function ($user) {\n    echo \"User {$user-&gt;name} is logging in.\";\n});\n\n$user-&gt;executeCallbacks(); \/\/ &#36755;&#20986;: User John Doe is logging in.<\/code><\/pre>\n<h3>&#31034;&#20363;&#20195;&#30721;<\/h3>\n<p>&#20197;&#19979;&#26159;&#19968;&#20010;&#23436;&#25972;&#30340;&#31034;&#20363;&#65292;&#23637;&#31034;&#20102;&#22914;&#20309;&#22312;Eloquent&#20013;&#27880;&#20876;&#21644;&#20351;&#29992;&#38381;&#21253;&#65306;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace App;\n\nuse IlluminateDatabaseEloquentModel;\nuse Closure;\n\nclass User extends Model\n{\n    protected $table = 'users';\n\n    public function registerCallback(Closure $callback)\n    {\n        $this-&gt;callbacks[] = $callback;\n    }\n\n    public function executeCallbacks()\n    {\n        foreach ($this-&gt;callbacks as $callback) {\n            $callback($this);\n        }\n    }\n}\n\n\/\/ &#21019;&#24314;&#19968;&#20010;&#29992;&#25143;&#23454;&#20363;\n$user = new User();\n\n\/\/ &#27880;&#20876;&#19968;&#20010;&#22238;&#35843;&#20989;&#25968;\n$user-&gt;registerCallback(function ($user) {\n    echo \"User {$user-&gt;name} is logging in.\";\n});\n\n\/\/ &#25191;&#34892;&#25152;&#26377;&#27880;&#20876;&#30340;&#22238;&#35843;&#20989;&#25968;\n$user-&gt;executeCallbacks(); \/\/ &#36755;&#20986;: User John Doe is logging in.\n\n\/\/ &#27880;&#20876;&#21478;&#19968;&#20010;&#22238;&#35843;&#20989;&#25968;\n$user-&gt;registerCallback(function ($user) {\n    echo \"User {$user-&gt;name} has logged out.\";\n});\n\n\/\/ &#25191;&#34892;&#25152;&#26377;&#27880;&#20876;&#30340;&#22238;&#35843;&#20989;&#25968;\n$user-&gt;executeCallbacks(); \/\/ &#36755;&#20986;: User John Doe is logging in. User John Doe has logged out.<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#31034;&#20363;&#20013;&#65292;&#25105;&#20204;&#23450;&#20041;&#20102;&#19968;&#20010;<code>User<\/code>&#27169;&#22411;&#65292;&#24182;&#22312;&#20854;&#19978;&#23450;&#20041;&#20102;<code>registerCallback<\/code>&#21644;<code>executeCallbacks<\/code>&#26041;&#27861;&#12290;&#28982;&#21518;&#65292;&#25105;&#20204;&#21019;&#24314;&#20102;&#19968;&#20010;&#29992;&#25143;&#23454;&#20363;&#65292;&#24182;&#20998;&#21035;&#27880;&#20876;&#20102;&#20004;&#20010;&#22238;&#35843;&#20989;&#25968;&#65292;&#26368;&#21518;&#35843;&#29992;&#20102;<code>executeCallbacks<\/code>&#26041;&#27861;&#26469;&#25191;&#34892;&#36825;&#20123;&#22238;&#35843;&#20989;&#25968;&#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>Eloquent &#26159;&#19968;&#20010;&#24378;&#22823;&#30340; ORM&#65288;&#23545;&#35937;&#20851;&#31995;&#26144;&#23556;&#65289;&#24037;&#20855;&#65292;&#19982; Laravel &#32467;&#21512;&#20351;&#29992;&#65292;&#25552;&#20379;&#20102;&#19968;&#20010;&#26131;&#20110;&#20351;&#29992;&#30340; ActiveRecord &#23454;&#29616;&#26469;&#22788;&#29702;&#25968;&#25454;&#24211;&#25805;&#20316;&#12290;&#23613;&#31649; Eloquent &#30340;&#19968;&#20123;&#29305;&#24615;&#21487;&#33021;&#19981;&#22914;&#20854;&#20182; ORM &#37027;&#26679;&#26174;&#30524;&#65292;&#20294;&#23427;&#30340;&#19968;&#20010;&#38750;&#24120;&#26377;&#29992;&#30340;&#29305;&#24615;&#23601;&#26159;&#25903;&#25345;&#38381;&#21253;&#25110;&#21311;&#21517;&#20989;&#25968;&#26469;&#23553;&#35013;&#26597;&#35810;&#36923;&#36753;&#12290;&#26412;&#25945;&#31243;&#23558;&#25351;&#23548;&#24744;&#22914;&#20309;&#27880;&#20876;&#21644;&#20351;&#29992;&#38381;&#21253;\/&#21311;&#21517;&#20989;&#25968;&#22312; Eloquent &#20013;&#36827;&#34892;&#25805;&#20316;&#65292;&#24110;&#21161;&#24744;&#32534;&#20889;&#28165;&#26224;&#19988;&#21487;&#32500;&#25252;&#30340;&#20195;&#30721;&#12290;<\/p><h2>&#29702;&#35299;PHP&#20013;&#30340;&#38381;&#21253;&#65288;Closures&#65289;<\/h2><p>&#22312;&#28145;&#20837;&#29702;&#35299;Eloquent&#20043;&#21069;&#65292;&#20102;&#35299;PHP&#20013;&#30340;&#38381;&#21253;&#65288;closure&#65289;&#33267;&#20851;&#37325;&#35201;&#12290;&#38381;&#21253;&#26159;&#19968;&#31181;&#21311;&#21517;&#20989;&#25968;&#65292;&#23427;&#21487;&#20197;&#20174;&#29238;&#20316;&#29992;&#22495;&#32487;&#25215;&#21464;&#37327;&#12290;&#36890;&#24120;&#29992;&#20110;&#37027;&#20123;&#19981;&#38656;&#35201;&#21517;&#31216;&#30340;&#20989;&#25968;&#65292;&#22914;&#22238;&#35843;&#25110;&#20107;&#20214;&#30417;&#21548;&#22120;&#12290;<\/p><pre><code>\n$greet = function($name)\n{\n    return \"Hello \" . $name;\n};\n\necho $greet(\"World\"); \n\/\/ Outputs: Hello World\n<\/code><\/pre><h2>Eloquent&#30340;&#38381;&#21253;&#22522;&#26412;&#29992;&#27861;<\/h2><p>&#22312;Eloquent&#20013;&#65292;&#38381;&#21253;&#21487;&#20197;&#20316;&#20026;&#26041;&#27861;&#30340;&#21442;&#25968;&#20256;&#36882;&#12290;<code>where<\/code>&#22909;&#30340;&#65292;&#35831;&#21457;&#36865;&#20320;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<code>when<\/code>&#21644;&#20320;&#26377;&#20160;&#20040;&#20107;&#21527;&#65311;<code>with<\/code>&#20801;&#35768;&#24744;&#20197;&#21487;&#35835;&#21644;&#21487;&#37325;&#29992;&#30340;&#26041;&#24335;&#26500;&#24314;&#22797;&#26434;&#30340;&#26597;&#35810;&#12290;&#20363;&#22914;&#65306;<\/p><pre><code>\n$users = User::where(function ($query)\n{\n    $query-&gt;where('age', '&gt;', 30)\n          -&gt;where('votes', '&gt;', 100);\n})-&gt;get();\n<\/code><\/pre><p>&#36825;&#23558;&#20250;&#33719;&#21462;&#24180;&#40836;&#22823;&#20110;30&#23681;&#19988;&#25317;&#26377;&#36229;&#36807;100&#31080;&#30340;&#29992;&#25143;&#12290;&#26465;&#20214;&#32452;&#25104;&#20102;&#38381;&#21253;&#12290;<code>where<\/code>&#26041;&#27861;&#26159;&#35753;&#19968;&#30524;&#23601;&#33021;&#30475;&#20986;&#26597;&#35810;&#30340;&#20316;&#29992;&#65292;&#26131;&#20110;&#29702;&#35299;&#12290;<\/p><h2>&#39640;&#32423;&#38381;&#21253;&#30340;&#20351;&#29992;<\/h2><p>&#24403;&#20320;&#23545;Eloquent&#20013;&#30340;&#38381;&#21253;&#26356;&#21152;&#29087;&#24713;&#21518;&#65292;&#21487;&#20197;&#24320;&#22987;&#20351;&#29992;&#23427;&#20204;&#26469;&#22788;&#29702;&#26356;&#22797;&#26434;&#30340;&#22330;&#26223;&#12290;&#20363;&#22914;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992;&#38381;&#21253;&#26469;&#23450;&#20041;&#20851;&#31995;&#32422;&#26463;&#65306;<\/p><pre><code>\n$users = User::with(['posts' =&gt; function ($query)\n{\n    $query-&gt;where('title', 'LIKE', '%first%');\n}])-&gt;get();\n<\/code><\/pre><p>&#36825;&#23558;&#20250;&#21152;&#36733;&#25152;&#26377;&#29992;&#25143;&#21450;&#20854;&#24086;&#23376;&#65292;&#20854;&#20013;&#24086;&#23376;&#26631;&#39064;&#21253;&#21547;&ldquo;first&rdquo;&#12290;&#38381;&#21253;&#20801;&#35768;&#22312;&#19981;&#21152;&#36733;&#25972;&#20010;&#20851;&#31995;&#25968;&#25454;&#30340;&#24773;&#20917;&#19979;&#65292;&#26377;&#26465;&#20214;&#22320;&#21152;&#36733;&#20851;&#31995;&#12290;<\/p><h3>&#20351;&#29992;&#38381;&#21253;&#36827;&#34892;&#26465;&#20214;&#35821;&#21477;&#30340;&#24773;&#20917;<\/h3><p>&#21478;&#19968;&#31181;&#20351;&#29992;&#38381;&#21253;&#30340;&#24378;&#22823;&#26041;&#27861;&#26159;&#29992;&#20110;&#26465;&#20214;&#35821;&#21477;&#12290;<code>when<\/code>The method in Eloquent accepts a closure and a boolean value. When the boolean value is<code>true<\/code>&#20851;&#38381;&#25805;&#20316;&#23558;&#25191;&#34892;&#65306;<\/p><pre><code>\n$search = 'John Doe';\n$users = User::when($search, function ($query, $search)\n{\n    return $query-&gt;where('name', $search);\n})-&gt;get();\n<\/code><\/pre><p>&#22914;&#26524;<code>$search<\/code>&#22914;&#26524;&#19968;&#20010;&#38750;&#31354;&#23383;&#31526;&#20018;&#23384;&#22312;&#65292;&#37027;&#20040;&#25628;&#32034;&#26465;&#20214;&#23558;&#20250;&#34987;&#24212;&#29992;&#65307;&#21542;&#21017;&#65292;&#23558;&#19981;&#20250;&#36827;&#34892;&#25628;&#32034;&#25805;&#20316;&#12290;<\/p><h2>&#36229;&#20986;&#22522;&#26412;&#26597;&#35810;<\/h2><p>&#36890;&#36807;&#32467;&#21512;&#38381;&#21253;&#19982;Eloquent&#30340;&#26597;&#35810;&#26041;&#27861;&#65292;&#21487;&#20197;&#21019;&#24314;&#21487;&#37325;&#29992;&#30340;&#21035;&#21517;&#26041;&#27861;&#12290;&#22312;Eloquent&#27169;&#22411;&#20013;&#23450;&#20041;&#21035;&#21517;&#65292;&#24182;&#21487;&#20197;&#20351;&#29992;&#38381;&#21253;&#36827;&#19968;&#27493;&#23450;&#21046;&#26597;&#35810;&#65306;<\/p><pre><code>\npublic function scopeOfType($query, $type)\n{\n    return $query-&gt;where('type', $type);\n}\n\n$admins = User::ofType('admin')-&gt;get();\n<\/code><\/pre><p>Scopes&#25552;&#20379;&#20102;&#19968;&#31181;&#31616;&#21333;&#30340;&#26041;&#27861;&#26469;&#23553;&#35013;&#26597;&#35810;&#36923;&#36753;&#65292;&#20174;&#32780;&#21487;&#20197;&#26174;&#33879;&#28165;&#29702;&#25511;&#21046;&#22120;&#20195;&#30721;&#12290;<\/p><h2>&#21160;&#24577;&#20851;&#31995;&#20351;&#29992;&#38381;&#21253;<\/h2><p>Eloquent&#20801;&#35768;&#20351;&#29992;&#38381;&#21253;&#26469;&#21019;&#24314;&#21160;&#24577;&#20851;&#31995;&#12290;&#24403;&#20851;&#31995;&#22312;&#27169;&#22411;&#20013;&#27809;&#26377;&#39044;&#23450;&#20041;&#26102;&#65292;&#36825;&#29305;&#21035;&#26377;&#29992;&#65306;<\/p><pre><code>\n$account = Account::find(1);\n\n$account-&gt;setRelation('dynamicUsers', $account-&gt;belongsToMany(User::class)-&gt;wherePivot('attribute', 'value')-&gt;get());\n<\/code><\/pre><h2>&#32467;&#35770;&#12290;<\/h2><p>&#26412;&#25945;&#31243;&#25506;&#35752;&#20102;&#38381;&#21253;&#19981;&#20165;&#20351;&#20195;&#30721;&#26356;&#21152;&#25972;&#27905;&#65292;&#36824;&#36171;&#20104;Eloquent&#26597;&#35810;&#26356;&#22810;&#30340;&#28789;&#27963;&#24615;&#21644;&#21487;&#32500;&#25252;&#24615;&#12290;&#36890;&#36807;&#22312;Eloquent&#26597;&#35810;&#20013;&#29087;&#32451;&#20351;&#29992;&#38381;&#21253;&#65292;&#20320;&#21487;&#20197;&#32534;&#20889;&#26356;&#20855;&#34920;&#36798;&#21147;&#12289;&#31616;&#27905;&#19988;&#21487;&#37325;&#29992;&#30340;&#25968;&#25454;&#24211;&#20132;&#20114;&#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 ORM &#20013;&#65292;&#20320;&#21487;&#20197;&#21019;&#24314;&#24182;&#20351;&#29992;&#38381;&#21253;&#26469;&#23454;&#29616;&#19968;&#20123;&#29305;&#23450;&#30340;&#21151;&#33021;&#12290;&#38381;&#21253;&#26159;&#19968;&#31181;&#20989;&#25968;&#24335;&#32534;&#31243;&#20013;&#30340;&#29305;&#24615;&#65292;&#23427;&#20801;&#35768;&#20320;&#23450;&#20041;&#19968;&#20010;&#21311;&#21517;&#30340;&#20869;&#37096;&#20316;&#29992;&#22495;&#65292;&#36825;&#20010;&#20316;&#29992;&#22495;&#21487;&#20197;&#35775;&#38382;&#22806;&#37096;&#20316;&#29992;&#22495;&#30340;&#21464;&#37327;&#12290;<\/p>\n<p>&#20197;&#19979;&#26159;&#22914;&#20309;&#22312; Eloquent &#20013;&#27880;&#20876;&#21644;&#20351;&#29992;&#38381;&#21253;&#30340;&#20363;&#23376;&#65306;<\/p>\n<ol>\n<li>&#21019;&#24314;&#19968;&#20010;&#38381;&#21253;<\/li>\n<\/ol>\n<p>&#39318;&#20808;&#65292;&#25105;&#20204;&#38656;&#35201;&#21019;&#24314;&#19968;&#20010;&#38381;&#21253;&#65292;&#28982;&#21518;&#23558;&#20854;&#27880;&#20876;&#21040; Eloquent &#27169;&#22411;&#19978;&#12290;<\/p>\n<pre><code class=\"language-php\">use Closure;\n\nclass MyModel {\n    protected $closure = null;\n\n    public function __construct($closure) {\n        $this-&gt;closure = $closure;\n    }\n\n    public function registerClosure(Closure $closure) {\n        $this-&gt;closure = $closure;\n    }\n}\n\n\/\/ &#20351;&#29992;\n$myModel = new MyModel(function ($request) {\n    return [\n        'name' =&gt; $request-&gt;input('name'),\n        'email' =&gt; $request-&gt;input('email')\n    ];\n});\n\n$myModel-&gt;registerClosure(function ($model, $request) {\n    $model['address'] = $request-&gt;input('address');\n    $model['phone'] = $request-&gt;input('phone');\n});<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;<code>MyModel<\/code> &#31867;&#26377;&#19968;&#20010; <code>__construct<\/code> &#26041;&#27861;&#65292;&#35813;&#26041;&#27861;&#25509;&#21463;&#19968;&#20010;&#38381;&#21253; <code>$closure<\/code>&#12290;&#24403;&#25105;&#20204;&#35843;&#29992; <code>new MyModel()<\/code> &#26102;&#65292;&#25105;&#20204;&#20256;&#36882;&#20102;&#19968;&#20010;&#38381;&#21253;&#20316;&#20026;&#21442;&#25968;&#12290;<\/p>\n<p>&#25509;&#19979;&#26469;&#65292;&#25105;&#20204;&#22312; <code>registerClosure<\/code> &#26041;&#27861;&#20013;&#23450;&#20041;&#20102;&#21478;&#19968;&#20010;&#38381;&#21253;&#65292;&#35813;&#38381;&#21253;&#25509;&#25910;&#20004;&#20010;&#21442;&#25968;&#65306;&#24403;&#21069;&#27169;&#22411;&#23454;&#20363; <code>$model<\/code> &#21644;&#35831;&#27714;&#23545;&#35937; <code>$request<\/code>&#12290;&#28982;&#21518;&#65292;&#25105;&#20204;&#20462;&#25913; <code>$model<\/code> &#23545;&#35937;&#30340;&#19968;&#37096;&#20998;&#65288;&#20363;&#22914;&#28155;&#21152;&#22320;&#22336;&#21644;&#30005;&#35805;&#65289;&#12290;<\/p>\n<ol start=\"2\">\n<li>&#20351;&#29992;&#38381;&#21253;<\/li>\n<\/ol>\n<p>&#29616;&#22312;&#65292;&#25105;&#20204;&#21487;&#20197;&#20351;&#29992;&#25105;&#20204;&#30340;&#38381;&#21253;&#26469;&#26356;&#26032; <code>$model<\/code> &#23545;&#35937;&#30340;&#37096;&#20998;&#23646;&#24615;&#12290;&#20363;&#22914;&#65292;&#22914;&#26524;&#25105;&#20204;&#35201;&#23558; <code>$model<\/code> &#23545;&#35937;&#30340; <code>email<\/code> &#23646;&#24615;&#35774;&#32622;&#20026;&#26032;&#30340;&#20540;&#65292;&#25105;&#20204;&#21487;&#20197;&#36825;&#26679;&#20570;&#65306;<\/p>\n<pre><code class=\"language-php\">$myModel-&gt;email = 'new-email@example.com';<\/code><\/pre>\n<ol start=\"3\">\n<li>&#27880;&#24847;&#20107;&#39033;<\/li>\n<\/ol>\n<ul>\n<li>&#22312;&#20351;&#29992;&#38381;&#21253;&#26102;&#65292;&#35831;&#30830;&#20445;&#23427;&#20204;&#19981;&#20250;&#23548;&#33268;&#20869;&#23384;&#27844;&#28431;&#25110;&#20854;&#20182;&#28508;&#22312;&#38382;&#39064;&#12290;<\/li>\n<li>&#22914;&#26524;&#20320;&#24819;&#22312;&#19968;&#20010;&#27169;&#22411;&#20013;&#22810;&#27425;&#20351;&#29992;&#21516;&#19968;&#20010;&#38381;&#21253;&#65292;&#21487;&#20197;&#32771;&#34385;&#23558;&#20854;&#36716;&#25442;&#20026;&#24037;&#21378;&#27169;&#24335;&#25110;&#32773;&#20854;&#20182;&#24418;&#24335;&#30340;&#21333;&#20363;&#35774;&#35745;&#27169;&#24335;&#12290;<\/li>\n<\/ul>\n<p>&#24076;&#26395;&#36825;&#20123;&#20449;&#24687;&#23545;&#20320;&#26377;&#25152;&#24110;&#21161;&#65281;&#22914;&#26524;&#20320;&#26377;&#20219;&#20309;&#30097;&#38382;&#25110;&#38656;&#35201;&#36827;&#19968;&#27493;&#30340;&#24110;&#21161;&#65292;&#35831;&#38543;&#26102;&#25552;&#38382;&#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;Eloquent&#20013;&#65292;&#38381;&#21253;&#65288;Closure&#65289;&#26159;&#19968;&#31181;&#38750;&#24120;&#24378;&#22823;&#038;#303..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[44],"tuisongtax":[],"class_list":["post-976","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\/976","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=976"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=976"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=976"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=976"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}