{"id":1008,"date":"2025-06-12T04:45:56","date_gmt":"2025-06-11T20:45:56","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/1008.html"},"modified":"2025-06-12T04:45:56","modified_gmt":"2025-06-11T20:45:56","slug":"laravel-eloquent%e4%b8%ad%e7%9a%84%e9%a2%84%e5%8a%a0%e8%bd%bd%ef%bc%9a%e9%80%9a%e8%bf%87%e7%a4%ba%e4%be%8b%e8%af%a6%e8%a7%a3","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/1008.html","title":{"rendered":"Laravel Eloquent\u4e2d\u7684\u9884\u52a0\u8f7d\uff1a\u901a\u8fc7\u793a\u4f8b\u8be6\u89e3"},"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>Laravel Eloquent &#26159;&#19968;&#20010;&#24378;&#22823;&#30340; ORM&#65288;&#23545;&#35937;&#20851;&#31995;&#26144;&#23556;&#65289;&#65292;&#23427;&#31616;&#21270;&#20102;&#25968;&#25454;&#24211;&#25805;&#20316;&#24182;&#25552;&#39640;&#20102;&#24320;&#21457;&#25928;&#29575;&#12290;&#39044;&#21152;&#36733;&#26159; Eloquent &#20013;&#19968;&#31181;&#38750;&#24120;&#26377;&#29992;&#30340;&#29305;&#24615;&#65292;&#21487;&#20197;&#26174;&#33879;&#20943;&#23569;&#26597;&#35810;&#27425;&#25968;&#21644;&#25552;&#39640;&#24615;&#33021;&#12290;<\/p>\n<h3>&#20160;&#20040;&#26159;&#39044;&#21152;&#36733;&#65311;<\/h3>\n<p>&#39044;&#21152;&#36733;&#26159;&#19968;&#31181;&#20248;&#21270;&#31574;&#30053;&#65292;&#23427;&#20801;&#35768;&#20320;&#22312;&#19968;&#27425;&#26597;&#35810;&#20013;&#33719;&#21462;&#22810;&#20010;&#20851;&#32852;&#30340;&#27169;&#22411;&#23454;&#20363;&#12290;&#36825;&#26679;&#21487;&#20197;&#20943;&#23569;&#25968;&#25454;&#24211;&#36830;&#25509;&#30340;&#25968;&#37327;&#65292;&#24182;&#19988;&#22312;&#26576;&#20123;&#24773;&#20917;&#19979;&#21487;&#20197;&#36991;&#20813;&#19981;&#24517;&#35201;&#30340;&#25968;&#25454;&#20256;&#36755;&#12290;<\/p>\n<h3>&#22914;&#20309;&#20351;&#29992;&#39044;&#21152;&#36733;<\/h3>\n<p>&#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010; <code>User<\/code> &#27169;&#22411;&#21644;&#19968;&#20010; <code>Post<\/code> &#27169;&#22411;&#65292;&#23427;&#20204;&#20043;&#38388;&#23384;&#22312;&#19968;&#23545;&#22810;&#30340;&#20851;&#31995;&#65306;<\/p>\n<pre><code class=\"language-php\">\/\/ User.php\nnamespace AppModels;\n\nuse IlluminateDatabaseEloquentModel;\n\nclass User extends Model\n{\n    public function posts()\n    {\n        return $this-&gt;hasMany(Post::class);\n    }\n}<\/code><\/pre>\n<pre><code class=\"language-php\">\/\/ Post.php\nnamespace AppModels;\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<h3>&#20351;&#29992;&#39044;&#21152;&#36733;&#30340;&#31034;&#20363;<\/h3>\n<p>&#20551;&#35774;&#25105;&#20204;&#35201;&#33719;&#21462;&#25152;&#26377;&#29992;&#25143;&#21450;&#20854;&#30456;&#20851;&#30340;_posts&#65292;&#25105;&#20204;&#21487;&#20197;&#20351;&#29992;&#39044;&#21152;&#36733;&#26469;&#19968;&#27425;&#24615;&#33719;&#21462;&#36825;&#20123;&#25968;&#25454;&#65306;<\/p>\n<pre><code class=\"language-php\">use AppModelsUser;\n\n$users = User::with('posts')-&gt;get();\n\nforeach ($users as $user) {\n    echo \"User: {$user-&gt;name}n\";\n    foreach ($user-&gt;posts as $post) {\n        echo \"- Post: {$post-&gt;title}n\";\n    }\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#31034;&#20363;&#20013;&#65292;&#25105;&#20204;&#20351;&#29992;&#20102; <code>with('posts')<\/code> &#26041;&#27861;&#26469;&#39044;&#21152;&#36733;&#29992;&#25143;&#30340; <code>posts<\/code> &#20851;&#32852;&#12290;&#36825;&#26679;&#65292;&#24403;&#25191;&#34892; <code>$users = User::with('posts')-&gt;get();<\/code> &#26102;&#65292;Eloquent &#20250;&#19968;&#27425;&#24615;&#20174;&#25968;&#25454;&#24211;&#20013;&#33719;&#21462;&#25152;&#26377;&#29992;&#25143;&#21450;&#20854;&#23545;&#24212;&#30340;_posts&#12290;<\/p>\n<h3>&#31034;&#20363;&#20195;&#30721;&#30456;&#20851;&#27493;&#39588;<\/h3>\n<ol>\n<li>\n<p><strong>&#23433;&#35013; Laravel<\/strong>&#65306;\n&#22914;&#26524;&#20320;&#36824;&#27809;&#26377;&#23433;&#35013; Laravel&#65292;&#21487;&#20197;&#20351;&#29992; Composer &#36827;&#34892;&#23433;&#35013;&#65306;<\/p>\n<pre><code class=\"language-bash\">composer create-project --prefer-dist laravel\/laravel my-app<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#21019;&#24314;&#27169;&#22411;<\/strong>&#65306;\n&#22312; <code>app\/Models<\/code> &#30446;&#24405;&#19979;&#21019;&#24314; <code>User<\/code> &#21644; <code>Post<\/code> &#27169;&#22411;&#25991;&#20214;&#65306;<\/p>\n<pre><code class=\"language-php\">\/\/ app\/Models\/User.php\nnamespace AppModels;\n\nuse IlluminateDatabaseEloquentModel;\n\nclass User extends Model\n{\n   public function posts()\n   {\n       return $this-&gt;hasMany(Post::class);\n   }\n}\n\n\/\/ app\/Models\/Post.php\nnamespace AppModels;\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<\/li>\n<li>\n<p><strong>&#39044;&#21152;&#36733;&#31034;&#20363;<\/strong>&#65306;\n&#22312; <code>routes\/web.php<\/code> &#25991;&#20214;&#20013;&#28155;&#21152;&#19968;&#20010;&#36335;&#30001;&#26469;&#27979;&#35797;&#39044;&#21152;&#36733;&#65306;<\/p>\n<pre><code class=\"language-php\">use AppModelsUser;\nuse IlluminateHttpRequest;\n\nRoute::get('\/users', function () {\n   $users = User::with('posts')-&gt;get();\n\n   foreach ($users as $user) {\n       echo \"User: {$user-&gt;name}n\";\n       foreach ($user-&gt;posts as $post) {\n           echo \"- Post: {$post-&gt;title}n\";\n       }\n   }\n});<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#36816;&#34892;&#24212;&#29992;<\/strong>&#65306;\n&#21551;&#21160;&#24320;&#21457;&#26381;&#21153;&#22120;&#24182;&#35775;&#38382; <code>\/users<\/code> &#36335;&#30001;&#65306;<\/p>\n<pre><code class=\"language-bash\">php artisan serve<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>&#29616;&#22312;&#65292;&#24403;&#20320;&#35775;&#38382; <code>\/users<\/code> &#36335;&#30001;&#26102;&#65292;&#20320;&#20250;&#30475;&#21040;&#27599;&#20010;&#29992;&#25143;&#21450;&#20854;&#25152;&#26377;&#30340;_posts &#30340;&#20449;&#24687;&#65292;&#36825;&#24471;&#30410;&#20110;&#39044;&#21152;&#36733;&#30340;&#20248;&#21270;&#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&#20197;&#20854;&#20248;&#38597;&#30340;&#35821;&#27861;&#21644;&#20808;&#36827;&#30340;&#29305;&#24615;&#33879;&#31216;&#65292;&#20026;&#24320;&#21457;&#32773;&#25552;&#20379;&#20102;ORM&#65288;&#23545;&#35937;&#20851;&#31995;&#26144;&#23556;&#65289;&#21363;Eloquent&#65292;&#36825;&#31616;&#21270;&#20102;&#19982;&#25968;&#25454;&#24211;&#30340;&#20132;&#20114;&#12290;ORM&#20801;&#35768;&#24320;&#21457;&#20154;&#21592;&#20351;&#29992;&#34920;&#36798;&#24335;&#30340;&#35821;&#27861;&#25805;&#20316;&#25968;&#25454;&#24211;&#23545;&#35937;&#21450;&#20854;&#20851;&#31995;&#12290;&#22312;&#19982;ORM&#24037;&#20316;&#26102;&#30340;&#19968;&#20010;&#20851;&#38190;&#26041;&#38754;&#26159;&#39640;&#25928;&#21152;&#36733;&#30456;&#20851;&#35760;&#24405;&#65292;&#25105;&#20204;&#23558;&#20854;&#31216;&#20026;&#39044;&#21152;&#36733;&#12290;&#22312;&#36825;&#20010;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#23558;&#25506;&#32034;&#20160;&#20040;&#26159;&#39044;&#21152;&#36733;&#12289;&#20026;&#20160;&#20040;&#23427;&#24517;&#35201;&#20197;&#21450;&#22914;&#20309;&#22312;Laravel Eloquent&#20013;&#23454;&#29616;&#36825;&#19968;&#21151;&#33021;&#65292;&#36890;&#36807;&#31034;&#20363;&#24110;&#21161;&#24744;&#29702;&#35299;&#24182;&#24212;&#29992;&#36825;&#20010;&#24378;&#22823;&#30340;&#29305;&#24615;&#22312;&#24744;&#30340;&#39033;&#30446;&#20013;&#12290;<\/p><h2>&#29702;&#35299;N+1&#26597;&#35810;&#38382;&#39064;<\/h2><p>&#22312;&#28145;&#20837;&#35752;&#35770;&#25042;&#21152;&#36733;&#20043;&#21069;&#65292;&#29702;&#35299;N+1&#26597;&#35810;&#38382;&#39064;&#33267;&#20851;&#37325;&#35201;&#12290;&#24819;&#35937;&#19968;&#19979;&#26377;&#19968;&#20010;&#21517;&#20026;&#30340;&#27169;&#22411;&#12290;<code>Post<\/code>, which has a many-to-one relationship with a<code>User<\/code>&#27169;&#22411;&#12290;&#22914;&#26524;&#20320;&#24819;&#26174;&#31034;&#25152;&#26377;&#24086;&#23376;&#21450;&#20854;&#20316;&#32773;&#65292;&#36890;&#24120;&#30340;&#24490;&#29615;&#32467;&#26500;&#21487;&#33021;&#26159;&#36825;&#26679;&#30340;&#65306;<\/p><pre><code>$posts = Post::all();\nforeach($posts as $post) {\n    echo $post-&gt;title . ' posted by ' . $post-&gt;user-&gt;name;\n}\n<\/code><\/pre><p>&#36825;&#30475;&#36215;&#26469;&#24456;&#31616;&#21333;&#65292;&#20294;&#20854;&#23454;&#21487;&#33021;&#20250;&#38750;&#24120;&#20302;&#25928;&#12290;&#39318;&#20808;&#65292;&#36825;&#20010;&#27969;&#31243;&#21487;&#33021;&#38656;&#35201;&#24456;&#38271;&#26102;&#38388;&#12290;<code>Post::all()<\/code>&#26041;&#27861;&#20250;&#25191;&#34892;&#19968;&#27425;&#26597;&#35810;&#26469;&#33719;&#21462;&#25152;&#26377;&#24086;&#23376;&#65292;&#28982;&#21518;&#23545;&#27599;&#20010;&#24086;&#23376;&#36827;&#34892;&#21478;&#19968;&#27425;&#26597;&#35810;&#20197;&#33719;&#21462;&#20316;&#32773;&#20449;&#24687;&#12290;&#36825;&#24847;&#21619;&#30528;&#22914;&#26524;&#26377;10&#20010;&#24086;&#23376;&#65292;&#26368;&#32456;&#20320;&#20250;&#25191;&#34892;11&#27425;&#26597;&#35810;&#65306;&#19968;&#20010;&#29992;&#20110;&#25152;&#26377;&#24086;&#23376;&#30340;&#26597;&#35810;&#21644;&#38024;&#23545;&#27599;&#20010;&#24086;&#23376;&#20316;&#32773;&#30340;&#39069;&#22806;10&#27425;&#26597;&#35810;&#12290;&#36825;&#23601;&#26159;N+1&#38382;&#39064;&#12290;<\/p><h2>Eager loading refers to the process of fetching all related data at once when a user requests certain information from a database. This approach allows for faster retrieval and reduces the need for subsequent queries, but it can also increase server load if not managed properly.<\/h2><p>&#25042;&#21152;&#36733;&#35299;&#20915;&#20102;N+1&#26597;&#35810;&#38382;&#39064;&#65292;&#36890;&#36807;&#19968;&#27425;&#24615;&#26597;&#35810;&#21363;&#21487;&#33719;&#21462;&#30456;&#20851;&#27169;&#22411;&#12290;Laravel&#30340;Eloquent ORM&#20801;&#35768;&#24744;&#25351;&#23450;&#21738;&#20123;&#20851;&#31995;&#24212;&#22312;&#24744;&#30340;&#27169;&#22411;&#20013;&#19968;&#36215;&#21152;&#36733;&#20197;&#38450;&#27490;N+1&#26597;&#35810;&#38382;&#39064;&#12290;&#22312;Laravel&#20013;&#65292;&#25042;&#21152;&#36733;&#36890;&#36807;&#20351;&#29992;with()&#26041;&#27861;&#26469;&#23454;&#29616;&#12290;<code>with<\/code>&#35813;&#26041;&#27861;&#25509;&#25910;&#35201;&#21152;&#36733;&#30340;&#20851;&#31995;&#21517;&#31216;&#30340;&#21015;&#34920;&#12290;<\/p><h3>&#20195;&#30721;&#31034;&#20363;&#65306;&#25042;&#21152;&#36733;<\/h3><pre><code>$posts = Post::with('user')-&gt;get();\nforeach($posts as $post) {\n    echo $post-&gt;title . ' posted by ' . $post-&gt;user-&gt;name;\n}\n<\/code><\/pre><p>&#22312;&#35813;&#20195;&#30721;&#20013;&#65292;&#25105;&#20204;&#21482;&#36890;&#36807;&#20004;&#20010;&#26597;&#35810;&#21363;&#21487;&#21152;&#36733;&#25152;&#26377;&#24086;&#23376;&#21450;&#20854;&#30456;&#20851;&#29992;&#25143;&#20449;&#24687;&#65292;&#26080;&#35770;&#24086;&#23376;&#25968;&#37327;&#26377;&#22810;&#23569;&#12290;&#36825;&#26159;&#36890;&#36807;&#20351;&#29992;&#20197;&#19979;&#26041;&#24335;&#23454;&#29616;&#30340;&#65306;<code>with<\/code>&#26041;&#27861;&#26469;&#25351;&#23450;&#25105;&#20204;&#24819;&#35201;&#20160;&#20040;&#30340;&#12290;<code>User<\/code>&#25105;&#20204;&#30340;&#20851;&#31995;&#20063;&#27493;&#20837;&#20102;&#27491;&#36712;&#12290;<code>Post<\/code>&#29289;&#20307;&#12290;<\/p><h2>&#39640;&#32423;&#25042;&#21152;&#36733;&#21152;&#36733;<\/h2><h3>&#21152;&#36733;&#22810;&#20010;&#20851;&#31995;<\/h3><p>&#20351;&#29992; eager loading&#65292;&#24744;&#19981;&#38656;&#35201;&#21463;&#38480;&#20110;&#21333;&#20010;&#20851;&#31995;&#12290;&#22914;&#26524;&#24744;&#30340;&#27169;&#22411;&#20855;&#26377;&#22810;&#20010;&#20851;&#31995;&#65292;&#21017;&#21487;&#20197;&#19968;&#27425;&#24615;&#21152;&#36733;&#36825;&#20123;&#20851;&#31995;&#65306;<\/p><pre><code>$books = Book::with(['author', 'publisher'])-&gt;get();<\/code><\/pre><h3>&#23884;&#22871;&#25042;&#21152;&#36733;<\/h3><p>&#24403;&#20851;&#31995;&#23884;&#22871;&#26102;&#65292;&#21363;&#20851;&#31995;&#21253;&#21547;&#21478;&#19968;&#20010;&#20851;&#31995;&#30340;&#24773;&#20917;&#65292;&#21152;&#36733;&#23427;&#20204;&#23601;&#21644;&#30452;&#25509;&#21152;&#36733;&#19968;&#26679;&#31616;&#21333;&#12290;&#20320;&#21487;&#20197;&#20351;&#29992;&#28857;&#35821;&#27861;&#26469;&#25351;&#23450;&#23884;&#22871;&#30340;&#20851;&#31995;&#65306;<\/p><pre><code>$users = User::with('posts.comments')-&gt;get();<\/code><\/pre><h2>&#21152;&#36733;&#32422;&#26463;<\/h2><p>&#26377;&#26102;&#65292;&#20320;&#21487;&#33021;&#24076;&#26395;&#23545;&#28212;&#26395;&#21152;&#36733;&#30340;&#27169;&#22411;&#26045;&#21152;&#26576;&#20123;&#26465;&#20214;&#25110;&#38480;&#21046;&#12290;&#36825;&#21487;&#20197;&#36890;&#36807;&#38381;&#21253;&#32422;&#26463;&#23454;&#29616;&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;&#31034;&#20363;&#65306;<\/p><pre><code>$users = User::with(['posts' =&gt; function ($query) {\n    $query-&gt;where('status', 'published')-&gt;take(10);\n}])-&gt;get();<\/code><\/pre><h2>&#24310;&#36831;&#21152;&#36733;&#22312;&#21518;&#26399;&#36827;&#34892;&#12290;<\/h2><p>&#22312;&#26576;&#20123;&#24773;&#20917;&#19979;&#65292;&#20320;&#21487;&#33021;&#24050;&#32463;&#33719;&#21462;&#20102;&#27169;&#22411;&#65292;&#20294;&#21518;&#26469;&#21448;&#24847;&#35782;&#21040;&#38656;&#35201;&#19968;&#20010;&#30456;&#20851;&#30340;&#27169;&#22411;&#12290;Laravel &#25552;&#20379;&#20102;&#19968;&#31181;&#20248;&#38597;&#30340;&#26041;&#24335;&#26469;&#35299;&#20915;&#36825;&#20010;&#38382;&#39064;&#65307;&#36825;&#23601;&#26159;&#20851;&#32852;&#27169;&#22411;&#65288;relationship models&#65289;&#12290;<code>load<\/code>&#26041;&#27861;&#22312;&#36825;&#31181;&#24773;&#20917;&#19979;&#38750;&#24120;&#26377;&#25928;&#65306;<\/p><pre><code>$user = User::find(1);\n\/\/ Later...\n$user-&gt;load('posts');<\/code><\/pre><h2>&#28165;&#28857;&#20154;&#25968;&#12290;<\/h2><p>&#25042;&#21152;&#36733;&#26159;&#19968;&#31181;&#22312;Laravel Eloquent ORM&#20013;&#30340;&#19981;&#21487;&#25110;&#32570;&#29305;&#24615;&#65292;&#23427;&#20248;&#21270;&#20102;ORM&#25805;&#20316;&#24182;&#25552;&#39640;&#20102;&#26597;&#35810;&#27169;&#22411;&#20043;&#38388;&#20851;&#31995;&#30340;&#24615;&#33021;&#12290;&#26412;&#25945;&#31243;&#26088;&#22312;&#20026;&#24744;&#25552;&#20379;&#23454;&#38469;&#31034;&#20363;&#65292;&#20197;&#20415;&#24744;&#29702;&#35299;&#21644;&#26377;&#25928;&#20351;&#29992;Laravel&#39033;&#30446;&#20013;&#30340;&#25042;&#21152;&#36733;&#21151;&#33021;&#12290;&#36890;&#36807;&#20851;&#27880;&#25042;&#21152;&#36733;&#65292;&#24744;&#21487;&#20197;&#32534;&#20889;&#26356;&#39640;&#25928;&#21644;&#21487;&#25193;&#23637;&#30340;&#24212;&#29992;&#31243;&#24207;&#65292;&#36991;&#20813;N+1&#26597;&#35810;&#38382;&#39064;&#65292;&#24182;&#26174;&#33879;&#20943;&#23569;&#25968;&#25454;&#24211;&#20013;&#30340;&#26597;&#35810;&#27425;&#25968;&#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>Eloquent &#26159; Laravel &#30340; ORM&#65288;&#23545;&#35937;&#20851;&#31995;&#26144;&#23556;&#65289;&#24211;&#65292;&#23427;&#25552;&#20379;&#20102;&#26041;&#20415;&#30340; API &#26469;&#25805;&#20316;&#25968;&#25454;&#24211;&#12290;&#39044;&#21152;&#36733;&#65288;preload&#65289;&#26159; Eloquent &#20013;&#30340;&#19968;&#20010;&#21151;&#33021;&#65292;&#20801;&#35768;&#20320;&#22312;&#26597;&#35810;&#26102;&#39044;&#20808;&#21152;&#36733;&#25968;&#25454;&#21040;&#32531;&#23384;&#20013;&#12290;<\/p>\n<h3>&#39044;&#21152;&#36733;&#30340;&#22522;&#26412;&#27010;&#24565;<\/h3>\n<p>&#39044;&#21152;&#36733;&#20801;&#35768;&#20320;&#20026;&#27169;&#22411;&#23545;&#35937;&#25552;&#20379;&#39069;&#22806;&#30340;&#20449;&#24687;&#65292;&#20363;&#22914;&#65292;&#24403;&#20320;&#38656;&#35201;&#22810;&#20010;&#20851;&#32852;&#30340;&#25968;&#25454;&#32780;&#19981;&#26159;&#21482;&#20851;&#24515;&#21333;&#20010;&#23454;&#20307;&#26102;&#12290;&#36825;&#21487;&#20197;&#22823;&#22823;&#25552;&#39640;&#24615;&#33021;&#65292;&#23588;&#20854;&#26159;&#22312;&#22788;&#29702;&#22823;&#37327;&#25968;&#25454;&#38598;&#26102;&#12290;<\/p>\n<h3>&#22914;&#20309;&#20351;&#29992;&#39044;&#21152;&#36733;<\/h3>\n<h4>&#31034;&#20363;&#65306;&#39044;&#21152;&#36733;&#22810;&#20010;&#20851;&#32852;<\/h4>\n<p>&#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010; <code>User<\/code> &#27169;&#22411;&#21644;&#19968;&#20010; <code>Post<\/code> &#27169;&#22411;&#65292;&#23427;&#20204;&#37117;&#26377;&#19968;&#20010;&#20849;&#21516;&#30340; <code>posts<\/code> &#20851;&#32852;&#23383;&#27573;&#12290;&#25105;&#20204;&#21487;&#20197;&#36825;&#26679;&#39044;&#21152;&#36733;&#20004;&#20010;&#30456;&#20851;&#30340; <code>Post<\/code> &#25968;&#25454;&#65306;<\/p>\n<pre><code class=\"language-php\">$users = User::with('posts')-&gt;get();<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;<code>User::with('posts')<\/code> &#20250;&#36820;&#22238;&#19968;&#20010;&#25968;&#32452;&#65292;&#20854;&#20013;&#21253;&#21547;&#20102;&#25152;&#26377;&#29992;&#25143;&#30340;&#20851;&#32852; <code>post<\/code> &#25968;&#25454;&#12290;<code>get()<\/code> &#26041;&#27861;&#21017;&#23558;&#36825;&#20123;&#25968;&#25454;&#20316;&#20026;&#32467;&#26524;&#36820;&#22238;&#12290;<\/p>\n<h4>&#31034;&#20363;&#65306;&#39044;&#21152;&#36733;&#29305;&#23450;&#23646;&#24615;<\/h4>\n<p>&#22914;&#26524;&#20320;&#21482;&#24819;&#33719;&#21462;&#29992;&#25143;&#30340;&#21517;&#23383;&#21644;&#20182;&#20204;&#21457;&#34920;&#30340;&#25152;&#26377;&#24086;&#23376;&#30340;&#25968;&#37327;&#65292;&#20320;&#21487;&#20197;&#36825;&#26679;&#20570;&#65306;<\/p>\n<pre><code class=\"language-php\">$users = User::with(['name', 'posts.count'])-&gt;get();<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;<code>with(['name', 'posts.count'])<\/code> &#23558;&#36820;&#22238;&#19968;&#20010;&#25968;&#32452;&#65292;&#20854;&#20013;&#21253;&#21547;&#29992;&#25143;&#30340;&#21517;&#23383;&#21644;&#27599;&#20010;&#24086;&#23376;&#30340;&#25968;&#37327;&#12290;<\/p>\n<h3>&#27880;&#24847;&#20107;&#39033;<\/h3>\n<ul>\n<li><strong>&#39044;&#21152;&#36733;&#21482;&#33021;&#22312;&#20851;&#31995;&#34920;&#19978;&#24212;&#29992;<\/strong>&#65292;&#21363;&#21482;&#26377;&#24403;&#20320;&#30340;&#27169;&#22411;&#26377;&#19982;&#21478;&#19968;&#20010;&#27169;&#22411;&#30340;&#20851;&#32852;&#26102;&#12290;<\/li>\n<li><strong>&#39044;&#21152;&#36733;&#19981;&#20250;&#24433;&#21709;&#25968;&#25454;&#24211;&#26597;&#35810;<\/strong>&#65292;&#22240;&#20026;&#23427;&#26159;&#22522;&#20110;&#32531;&#23384;&#36827;&#34892;&#30340;&#12290;<\/li>\n<li><strong>&#39044;&#21152;&#36733;&#19981;&#20250;&#25913;&#21464;&#25968;&#25454;&#32467;&#26500;<\/strong>&#65292;&#25152;&#20197;&#21363;&#20351;&#20851;&#31995;&#34987;&#21024;&#38500;&#65292;&#39044;&#21152;&#36733;&#30340;&#20851;&#32852;&#20449;&#24687;&#20063;&#20250;&#20445;&#25345;&#19981;&#21464;&#12290;<\/li>\n<\/ul>\n<h3>&#23454;&#36341;&#26696;&#20363;<\/h3>\n<p>&#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010; <code>Comment<\/code> &#27169;&#22411;&#65292;&#23427;&#26377; <code>user_id<\/code> &#21644; <code>post_id<\/code> &#23383;&#27573;&#26469;&#20851;&#32852;&#21040; <code>User<\/code> &#21644; <code>Post<\/code>&#12290;&#25105;&#20204;&#21487;&#20197;&#36825;&#26679;&#39044;&#21152;&#36733;&#35780;&#35770;&#65306;<\/p>\n<pre><code class=\"language-php\">$comments = Comment::with(['user' =&gt; function ($query) {\n    $query-&gt;select('id', 'username');\n}, 'post' =&gt; function ($query) {\n    $query-&gt;select('title', 'created_at');\n}])-&gt;get();<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;<code>with<\/code> &#20989;&#25968;&#20998;&#21035;&#23545; <code>user<\/code> &#21644; <code>post<\/code> &#36827;&#34892;&#20102;&#39044;&#21152;&#36733;&#65292;&#20174;&#32780;&#33719;&#24471;&#20102;&#29992;&#25143;&#30340;&#21517;&#23383;&#21644;&#24086;&#23376;&#26631;&#39064;&#12290;&#36825;&#31181;&#20570;&#27861;&#25552;&#39640;&#20102;&#26597;&#35810;&#25928;&#29575;&#65292;&#24182;&#19988;&#22312;&#21518;&#32493;&#30340;&#25805;&#20316;&#20013;&#26080;&#38656;&#20877;&#27425;&#25191;&#34892;&#39044;&#21152;&#36733;&#36923;&#36753;&#12290;<\/p>\n<p>&#20197;&#19978;&#23601;&#26159;&#20851;&#20110; Laravel Eloquent &#20013;&#39044;&#21152;&#36733;&#30340;&#31616;&#21333;&#20171;&#32461;&#21644;&#23454;&#38469;&#24212;&#29992;&#31034;&#20363;&#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; Laravel Eloquent &#26159;&#19968;&#20010;&#24378;&#22823;&#30340; ORM&#65288;&#23545;&#35937;&#20851;&#31995;&#26144;&#23556;&#038;#65289..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[44],"tuisongtax":[],"class_list":["post-1008","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\/1008","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=1008"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=1008"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=1008"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=1008"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}