{"id":922,"date":"2025-06-12T02:49:44","date_gmt":"2025-06-11T18:49:44","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/922.html"},"modified":"2025-06-12T02:49:44","modified_gmt":"2025-06-11T18:49:44","slug":"laravel-%e6%9f%a5%e8%af%a2%e6%9e%84%e9%80%a0%e5%99%a8%e4%b8%ad%e7%9a%84%e5%b7%a6%e8%bf%9e%e6%8e%a5-%e5%8f%b3%e8%bf%9e%e6%8e%a5%ef%bc%9a%e6%95%99%e7%a8%8b%e4%b8%8e%e7%a4%ba%e4%be%8b","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/922.html","title":{"rendered":"Laravel \u67e5\u8be2\u6784\u9020\u5668\u4e2d\u7684\u5de6\u8fde\u63a5\/\u53f3\u8fde\u63a5\uff1a\u6559\u7a0b\u4e0e\u793a\u4f8b"},"content":{"rendered":"<div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--1\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/dyA-1-400x300.jpg\" alt=\"Bug&#32534;&#35793;&#29422;\" class=\"wp-image-1842\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">Bug&#32534;&#35793;&#29422;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#22312; Laravel &#20013;&#65292;&#26597;&#35810;&#26500;&#36896;&#22120;&#25552;&#20379;&#20102;&#24378;&#22823;&#30340;&#21151;&#33021;&#26469;&#26500;&#24314;&#22797;&#26434;&#30340;&#25968;&#25454;&#24211;&#26597;&#35810;&#12290;&#20854;&#20013;&#65292;<code>LEFT JOIN<\/code> &#21644; <code>RIGHT JOIN<\/code> &#26159;&#38750;&#24120;&#24120;&#29992;&#30340;&#36830;&#25509;&#31867;&#22411;&#65292;&#23427;&#20204;&#29992;&#20110;&#23558;&#20004;&#20010;&#34920;&#30340;&#25968;&#25454;&#36830;&#25509;&#22312;&#19968;&#36215;&#65292;&#24182;&#36820;&#22238;&#25152;&#26377;&#20174;&#24038;&#36793;&#34920;&#20013;&#33719;&#21462;&#30340;&#34892;&#65292;&#20197;&#21450;&#21491;&#36793;&#34920;&#20013;&#21305;&#37197;&#30340;&#34892;&#12290;<\/p>\n<h3>&#24038;&#36830;&#25509;&#65288;Left Join&#65289;<\/h3>\n<p>&#24038;&#36830;&#25509;&#36820;&#22238;&#24038;&#36793;&#34920;&#20013;&#30340;&#25152;&#26377;&#35760;&#24405;&#65292;&#20197;&#21450;&#21491;&#36793;&#34920;&#20013;&#21305;&#37197;&#30340;&#35760;&#24405;&#12290;&#22914;&#26524;&#21491;&#36793;&#34920;&#20013;&#27809;&#26377;&#21305;&#37197;&#30340;&#35760;&#24405;&#65292;&#21017;&#21491;&#36793;&#34920;&#30340;&#21015;&#23558;&#26174;&#31034;&#20026; <code>NULL<\/code>&#12290;<\/p>\n<h4>&#31034;&#20363;<\/h4>\n<p>&#20551;&#35774;&#25105;&#20204;&#26377;&#20004;&#20010;&#34920; <code>users<\/code> &#21644; <code>orders<\/code>&#65292;&#25105;&#20204;&#24819;&#35201;&#26597;&#35810;&#25152;&#26377;&#29992;&#25143;&#21450;&#20854;&#35746;&#21333;&#20449;&#24687;&#65306;<\/p>\n<pre><code class=\"language-php\">use AppModelsUser;\nuse AppModelsOrder;\n\n$usersWithOrders = User::leftJoin('orders', 'users.id', '=', 'orders.user_id')\n    -&gt;select('users.*', 'orders.order_date')\n    -&gt;get();<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#31034;&#20363;&#20013;&#65306;<\/p>\n<ul>\n<li><code>User::leftJoin('orders', 'users.id', '=', 'orders.user_id')<\/code> &#21019;&#24314;&#20102;&#19968;&#20010;&#24038;&#36830;&#25509;&#65292;&#23558; <code>users<\/code> &#34920;&#21644; <code>orders<\/code> &#34920;&#36890;&#36807; <code>id<\/code> &#21644; <code>user_id<\/code> &#36827;&#34892;&#36830;&#25509;&#12290;<\/li>\n<li><code>-&gt;select('users.*', 'orders.order_date')<\/code> &#25351;&#23450;&#20102;&#35201;&#36873;&#25321;&#30340;&#23383;&#27573;&#12290;<\/li>\n<li><code>-&gt;get()<\/code> &#25191;&#34892;&#26597;&#35810;&#24182;&#36820;&#22238;&#32467;&#26524;&#12290;<\/li>\n<\/ul>\n<h3>&#21491;&#36830;&#25509;&#65288;Right Join&#65289;<\/h3>\n<p>&#21491;&#36830;&#25509;&#36820;&#22238;&#21491;&#36793;&#34920;&#20013;&#30340;&#25152;&#26377;&#35760;&#24405;&#65292;&#20197;&#21450;&#24038;&#36793;&#34920;&#20013;&#21305;&#37197;&#30340;&#35760;&#24405;&#12290;&#22914;&#26524;&#24038;&#36793;&#34920;&#20013;&#27809;&#26377;&#21305;&#37197;&#30340;&#35760;&#24405;&#65292;&#21017;&#24038;&#36793;&#34920;&#30340;&#21015;&#23558;&#26174;&#31034;&#20026; <code>NULL<\/code>&#12290;<\/p>\n<h4>&#31034;&#20363;<\/h4>\n<p>&#20551;&#35774;&#25105;&#20204;&#26377;&#20004;&#20010;&#34920; <code>users<\/code> &#21644; <code>orders<\/code>&#65292;&#25105;&#20204;&#24819;&#35201;&#26597;&#35810;&#25152;&#26377;&#35746;&#21333;&#21450;&#20854;&#29992;&#25143;&#20449;&#24687;&#65306;<\/p>\n<pre><code class=\"language-php\">use AppModelsUser;\nuse AppModelsOrder;\n\n$ordersWithUsers = Order::rightJoin('users', 'orders.user_id', '=', 'users.id')\n    -&gt;select('orders.*', 'users.name')\n    -&gt;get();<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#31034;&#20363;&#20013;&#65306;<\/p>\n<ul>\n<li><code>Order::rightJoin('users', 'orders.user_id', '=', 'users.id')<\/code> &#21019;&#24314;&#20102;&#19968;&#20010;&#21491;&#36830;&#25509;&#65292;&#23558; <code>orders<\/code> &#34920;&#21644; <code>users<\/code> &#34920;&#36890;&#36807; <code>user_id<\/code> &#21644; <code>id<\/code> &#36827;&#34892;&#36830;&#25509;&#12290;<\/li>\n<li><code>-&gt;select('orders.*', 'users.name')<\/code> &#25351;&#23450;&#20102;&#35201;&#36873;&#25321;&#30340;&#23383;&#27573;&#12290;<\/li>\n<li><code>-&gt;get()<\/code> &#25191;&#34892;&#26597;&#35810;&#24182;&#36820;&#22238;&#32467;&#26524;&#12290;<\/li>\n<\/ul>\n<h3>&#24635;&#32467;<\/h3>\n<ul>\n<li><strong>&#24038;&#36830;&#25509;<\/strong> &#36820;&#22238;&#24038;&#36793;&#34920;&#20013;&#30340;&#25152;&#26377;&#35760;&#24405;&#65292;&#20197;&#21450;&#21491;&#36793;&#34920;&#20013;&#21305;&#37197;&#30340;&#35760;&#24405;&#12290;&#22914;&#26524;&#21491;&#36793;&#34920;&#20013;&#27809;&#26377;&#21305;&#37197;&#30340;&#35760;&#24405;&#65292;&#21017;&#21491;&#36793;&#34920;&#30340;&#21015;&#23558;&#26174;&#31034;&#20026; <code>NULL<\/code>&#12290;<\/li>\n<li><strong>&#21491;&#36830;&#25509;<\/strong> &#36820;&#22238;&#21491;&#36793;&#34920;&#20013;&#30340;&#25152;&#26377;&#35760;&#24405;&#65292;&#20197;&#21450;&#24038;&#36793;&#34920;&#20013;&#21305;&#37197;&#30340;&#35760;&#24405;&#12290;&#22914;&#26524;&#24038;&#36793;&#34920;&#20013;&#27809;&#26377;&#21305;&#37197;&#30340;&#35760;&#24405;&#65292;&#21017;&#24038;&#36793;&#34920;&#30340;&#21015;&#23558;&#26174;&#31034;&#20026; <code>NULL<\/code>&#12290;<\/li>\n<\/ul>\n<p>&#36890;&#36807;&#36825;&#20123;&#31034;&#20363;&#20195;&#30721;&#65292;&#20320;&#21487;&#20197;&#30475;&#21040;&#22914;&#20309;&#20351;&#29992; Laravel &#30340;&#26597;&#35810;&#26500;&#36896;&#22120;&#36827;&#34892;&#24038;&#36830;&#25509;&#21644;&#21491;&#36830;&#25509;&#25805;&#20316;&#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>&#28145;&#20837;Laravel&#30340;&#26597;&#35810;&#26500;&#24314;&#22120;&#65292;&#21487;&#20197;&#35753;&#24320;&#21457;&#20154;&#21592;&#36890;&#36807;&#34920;&#36798;&#24335;&#21644;&#27969;&#21033;&#30340;&#35821;&#27861;&#26469;&#26500;&#36896;&#22797;&#26434;&#30340;SQL&#26597;&#35810;&#12290;&#22312;&#26412;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#23558;&#37325;&#28857;&#29702;&#35299;&#24182;&#21033;&#29992;&#24038;&#36830;&#25509;&#21644;&#21491;&#36830;&#25509;&#12290;&#36830;&#25509;&#26159;&#20851;&#31995;&#25968;&#25454;&#24211;&#20013;&#30340;&#37325;&#35201;&#32452;&#25104;&#37096;&#20998;&#65292;&#20801;&#35768;&#25105;&#20204;&#20174;&#19981;&#21516;&#34920;&#20013;&#21512;&#24182;&#34892;&#65292;&#24182;&#22240;&#27492;&#25104;&#20026;&#20219;&#20309;&#22797;&#26434;Laravel&#24212;&#29992;&#31243;&#24207;&#30340;&#22522;&#30784;&#12290;<\/p><p>&#22909;&#30340;&#65292;&#29702;&#35299;&#20102;&#12290;&#22312;SQL&#20013;&#65292;Join&#23376;&#21477;&#29992;&#20110;&#20174;&#25968;&#25454;&#24211;&#20013;&#30340;&#20004;&#20010;&#25110;&#22810;&#20010;&#34920;&#20013;&#32452;&#21512;&#35760;&#24405;&#12290;&#24038;&#36830;&#25509;&#65288;&#20063;&#31216;&#20026;&#24038;&#22806;&#36830;&#25509;&#65289;&#36820;&#22238;&#31532;&#19968;&#20010;&#34920;&#30340;&#25152;&#26377;&#35760;&#24405;&#20197;&#21450;&#19982;&#31532;&#20108;&#20010;&#34920;&#21305;&#37197;&#30340;&#35760;&#24405;&#12290;&#24403;&#27809;&#26377;&#21305;&#37197;&#26102;&#65292;&#22312;&#21491;&#20391;&#30340;&#32467;&#26524;&#20026;NULL&#12290;&#21478;&#19968;&#26041;&#38754;&#65292;&#21491;&#36830;&#25509;&#65288;&#21491;&#22806;&#36830;&#25509;&#65289;&#36820;&#22238;&#31532;&#20108;&#20010;&#34920;&#30340;&#25152;&#26377;&#35760;&#24405;&#20197;&#21450;&#19982;&#31532;&#19968;&#20010;&#34920;&#21305;&#37197;&#30340;&#35760;&#24405;&#65292;&#32467;&#26524;&#20026;NULL&#22312;&#24038;&#20391;&#26102;&#27809;&#26377;&#21305;&#37197;&#12290;<\/p><h2>&#24038;&#36830;&#25509;&#21644;&#21491;&#36830;&#25509;&#30340;&#22522;&#26412;&#35821;&#27861;<\/h2><p>Laravel&#30340;&#26597;&#35810;&#26500;&#24314;&#22120;&#20351;&#24471;&#32534;&#20889;&#36830;&#25509;&#35821;&#21477;&#21464;&#24471;&#24322;&#24120;&#31616;&#21333;&#12290;&#24038;&#36830;&#25509;&#30340;&#22522;&#26412;&#35821;&#27861;&#22914;&#19979;&#65306;<\/p><pre><code>\nDB::table('table1')\n\t-&gt;leftJoin('table2', 'table1.id', '=', 'table2.table1_id')\n\t-&gt;get();\n<\/code><\/pre><p>&#36825;&#37324;&#30340;&#27491;&#30830;&#21305;&#37197;&#39033;&#22914;&#19979;&#65306;<\/p><pre><code>\nDB::table('table1')\n\t-&gt;rightJoin('table2', 'table1.id', '=', 'table2.table1_id')\n\t-&gt;get();\n<\/code><\/pre><p>&#35831;&#27880;&#24847;&#65292;&#22312;&#20195;&#30721;&#29255;&#27573;&#20013;&#25552;&#21040;&#30340;&ldquo;DB&rdquo;&#65288;&#36890;&#24120;&#25351;&#25968;&#25454;&#24211;&#65289;&#26159;&#19968;&#20010;&#30001;Laravel&#25552;&#20379;&#30340;Facade&#65292;&#29992;&#20110;&#26041;&#20415;&#22320;&#35775;&#38382;&#25968;&#25454;&#24211;&#12290;<\/p><h2>&#35774;&#32622;&#29615;&#22659;<\/h2><p>&#22312;&#24320;&#22987;&#21033;&#29992;Laravel&#24212;&#29992;&#20013;&#30340;&#36830;&#25509;&#20043;&#21069;&#65292;&#30830;&#20445;&#24744;&#24050;&#32463;&#22312;&#36873;&#25321;&#30340;&#29615;&#22659;&#20013;&#35774;&#32622;&#20102;&#36816;&#34892;&#20013;&#30340;Laravel&#23433;&#35013;&#12290;&#20026;&#20102;&#20351;&#26412;&#25945;&#31243;&#26356;&#26131;&#20110;&#36827;&#34892;&#65292;&#24744;&#24212;&#35813;&#35774;&#32622;&#19968;&#20010;&#21253;&#21547;&#31034;&#20363;&#34920;&#30340;&#25968;&#25454;&#24211;&#65292;&#22240;&#20026;&#25105;&#20204;&#23558;&#22312;&#20854;&#20013;&#20351;&#29992;&#36825;&#20123;&#34920;&#26469;&#36827;&#34892;&#28436;&#31034;&#12290;<\/p><h2>&#22909;&#30340;&#65292;&#35831;&#25552;&#20379;&#38656;&#35201;&#32763;&#35793;&#30340;&#23545;&#35805;&#25110;&#20195;&#30721;&#31034;&#20363;&#65292;&#25105;&#20250;&#23558;&#20854;&#32763;&#35793;&#25104;&#20013;&#25991;&#24182;&#22238;&#22797;&#32473;&#24744;&#12290;<\/h2><p>&#20026;&#20102;&#35828;&#26126;&#22914;&#20309;&#20351;&#29992;&#24038;&#36830;&#25509;&#21644;&#21491;&#36830;&#25509;&#65292;&#35753;&#25105;&#20204;&#32771;&#34385;&#19968;&#20010;&#19982;&#20004;&#20010;&#30456;&#20851;&#34920;&#30456;&#20851;&#30340;&#20363;&#23376;&#65306;<\/p><p>&#24086;&#23376;&#65288;id&#65292;&#29992;&#25143;ID&#65292;&#26631;&#39064;&#65292;&#20869;&#23481;&#65289;<\/p><p>&#29992;&#25143;&#34920;&#65288;id, &#21517;&#31216;, &#37038;&#31665;&#65289;<\/p><p>&#22312;&#36825;&#31181;&#24773;&#20917;&#19979;&#65292;&#24744;&#24076;&#26395;&#26816;&#32034;&#25152;&#26377;&#29992;&#25143;&#21450;&#20854;&#24086;&#23376;&#12290;&#34429;&#28982;&#24182;&#38750;&#27599;&#21517;&#29992;&#25143;&#37117;&#26377;&#24086;&#23376;&#65292;&#20294;&#25105;&#20204;&#20173;&#28982;&#24076;&#26395;&#36820;&#22238;&#25152;&#26377;&#29992;&#25143;&#12290;<\/p><h3>&#20351;&#29992;&#24038;&#36830;&#25509;&#12290;<\/h3><pre><code>\n$usersWithPosts = DB::table('users')\n\t-&gt;leftJoin('posts', 'users.id', '=', 'posts.user_id')\n\t-&gt;select('users.*', 'posts.title as post_title')\n\t-&gt;get();\n<\/code><\/pre><p>&#22914;&#26524;&#20351;&#29992;&#30340;&#26159;&#21491;&#36830;&#25509;&#65292;&#36825;&#26159;&#36739;&#20026;&#23569;&#35265;&#20294;&#26377;&#26102;&#20173;&#28982;&#24517;&#35201;&#30340;&#36830;&#25509;&#31867;&#22411;&#65292;&#37027;&#20040;&#25105;&#20204;&#38656;&#35201;&#26816;&#32034;&#25152;&#26377;&#24086;&#23376;&#21450;&#20854;&#30456;&#20851;&#29992;&#25143;&#12290;<\/p><h3>&#20351;&#29992;&#21491;&#36830;&#25509;<\/h3><pre><code>\n$postsWithUsers = DB::table('posts')\n\t-&gt;rightJoin('users', 'posts.user_id', '=', 'users.id')\n\t-&gt;select('posts.*', 'users.name as author_name')\n\t-&gt;get();\n<\/code><\/pre><h2>&#39640;&#32423;&#36830;&#25509;&#23376;&#21477;<\/h2><p>Laravel &#36824;&#20801;&#35768;&#26356;&#22797;&#26434;&#30340;&#36830;&#25509;&#25805;&#20316;&#65292;&#20363;&#22914;&#25351;&#23450;&#22810;&#20010;&#26465;&#20214;&#36827;&#34892;&#36830;&#25509;&#65292;&#29978;&#33267;&#21487;&#20197;&#19982;&#23376;&#26597;&#35810;&#36827;&#34892;&#36830;&#25509;&#12290;<\/p><h3>&#22810;&#20010;&#26465;&#20214;&#36830;&#25509;<\/h3><pre><code>\n$usersWithPosts = DB::table('users')\n\t-&gt;leftJoin('posts', function ($join) {\n\t\t$join-&gt;on('users.id', '=', 'posts.user_id')\n\t\t\t-&gt;where('posts.published', '=', true);\n\t})\n\t-&gt;get();\n<\/code><\/pre><p>&#36825;&#20010;&#20195;&#30721;&#20250;&#33719;&#21462;&#25152;&#26377;&#29992;&#25143;&#20197;&#21450;&#20165;&#20182;&#20204;&#30340;&#21457;&#24067;&#24086;&#23376;&#12290;<\/p><h3>&#23376;&#26597;&#35810;&#36830;&#25509;&#25805;&#20316;<\/h3><p>&#20320;&#21487;&#20197;&#36890;&#36807;&#23376;&#26597;&#35810;&#30340;&#26041;&#24335;&#21152;&#20837;&#65306;<\/p><pre><code>\n$latestPosts = DB::table('posts')\n\t-&gt;select('user_id', DB::raw('MAX(created_at) as latest_post'))\n\t-&gt;groupBy('user_id');\n\n$usersWithLatestPosts = DB::table('users')\n\t-&gt;joinSub($latestPosts, 'latestPosts', function ($join) {\n\t$join-&gt;on('users.id', '=', 'latestPosts.user_id');\n\t})\n\t-&gt;get();\n<\/code><\/pre><h2>&#21152;&#20837; eloquent &#30340;&#20851;&#31995;<\/h2><p>&#34429;&#28982;&#25105;&#20204;&#19978;&#38754;&#30340;&#20363;&#23376;&#20351;&#29992;&#20102;&#26597;&#35810;&#26500;&#24314;&#22120;&#65292;&#20294;&#24744;&#20063;&#21487;&#20197;&#22312;&#24744;&#30340;Eloquent&#27169;&#22411;&#20013;&#23450;&#20041;&#20851;&#31995;&#26041;&#27861;&#12290;Eloquent&#30340;&#20851;&#31995;&#26041;&#27861;&#65292;&#22914;<code>hasMany()<\/code>and &#26159;&#20013;&#25991;&#37324;&#34920;&#31034;&ldquo;&#24182;&#19988;&rdquo;&#30340;&#24847;&#24605;&#12290;<code>belongsTo()<\/code>&#21487;&#20197;&#19982;&#20043;&#32467;&#21512;&#30340;&#26159;&#12290;<code>with()<\/code>&#26041;&#27861;&#22312;&#24149;&#21518;&#29983;&#25104;&#30456;&#20284;&#30340;&#36830;&#25509;&#65292;&#32780;&#26080;&#38656;&#25163;&#21160;&#32534;&#20889;&#36830;&#25509;&#12290;<\/p><h3>&#20351;&#29992;&ldquo;with ()&rdquo;&#30340;&#31034;&#20363;<\/h3><pre><code>\n$users = User::with('posts')-&gt;get();\n<\/code><\/pre><p>&#23558;&#36825;&#20123;&#31867;&#22411;&#30340;&#21151;&#33021;&#38598;&#25104;&#21040;&#24744;&#30340;Laravel&#24212;&#29992;&#31243;&#24207;&#20013;&#20307;&#29616;&#20102;&#26694;&#26550;&#30340;&#28789;&#27963;&#24615;&#21644;&#24378;&#22823;&#21151;&#33021;&#12290;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>&#29702;&#35299;&#22914;&#20309;&#20351;&#29992;&#24038;&#36830;&#25509;&#21644;&#21491;&#36830;&#25509;&#20197;Laravel&#30340;&#26597;&#35810;&#26500;&#24314;&#22120;&#26041;&#24335;&#23637;&#31034;&#20102;&#35299;&#26512;&#22914;&#20309;&#26377;&#25928;&#22320;&#25805;&#32437;&#24182;&#26816;&#32034;&#30456;&#20851;&#25968;&#25454;&#38598;&#30340;&#33021;&#21147;&#12290;&#26080;&#35770;&#26159;&#36873;&#25321;&#30452;&#25509;&#20351;&#29992;&#26597;&#35810;&#26500;&#24314;&#22120;&#36827;&#34892;&#36830;&#25509;&#36824;&#26159;&#20559;&#22909;&#20351;&#29992;Eloquent&#20851;&#31995;&#65292;Laravel&#37117;&#25552;&#20379;&#20102;&#24517;&#35201;&#30340;&#24037;&#20855;&#26469;&#39640;&#25928;&#22320;&#19982;&#25968;&#25454;&#24211;&#20132;&#20114;&#12290;<\/p><p>&#36890;&#36807;&#23454;&#38469;&#20363;&#23376;&#65292;&#25105;&#20204;&#35265;&#35777;&#20102;&#23545;&#25968;&#25454;&#24211;&#20851;&#31995;&#30340;&#22522;&#26412;&#29702;&#35299;&#22312;Laravel&#20013;&#30340;&#37325;&#35201;&#24615;&#12290;&#26377;&#20102;&#36825;&#20123;&#30693;&#35782;&#65292;&#24744;&#24050;&#32463;&#22312;&#25484;&#25569;&#29616;&#20195;Web&#24212;&#29992;&#31243;&#24207;&#25152;&#38656;&#26080;&#32541;&#25968;&#25454;&#24211;&#25805;&#20316;&#26041;&#38754;&#21462;&#24471;&#20102;&#26174;&#33879;&#36827;&#23637;&#12290;<\/p><p>&#24456;&#39640;&#20852;&#33021;&#24110;&#21040;&#24744;&#65281; coding &#26159;&#19968;&#31181;&#20048;&#36259;&#65292;&#31069;&#24744;&#32534;&#31243;&#24841;&#24555;&#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;&#26597;&#35810;&#26500;&#36896;&#22120;&#65288;query builder&#65289;&#25552;&#20379;&#20102;&#19968;&#31181;&#31616;&#27905;&#30340;&#26041;&#24335;&#26469;&#21019;&#24314;&#21644;&#25191;&#34892; SQL &#26597;&#35810;&#12290;&#23545;&#20110;&#24038;&#36830;&#25509;&#21644;&#21491;&#36830;&#25509;&#65292;&#25105;&#20204;&#36890;&#24120;&#20250;&#20351;&#29992; <code>LEFT JOIN<\/code> &#21644; <code>RIGHT JOIN<\/code> &#20851;&#38190;&#23383;&#12290;<\/p>\n<h3>&#24038;&#36830;&#25509;&#65288;LEFT JOIN&#65289;<\/h3>\n<p><strong>&#27010;&#24565;<\/strong>&#65306;&#24038;&#36830;&#25509;&#36820;&#22238;&#20004;&#20010;&#34920;&#30340;&#25152;&#26377;&#34892;&#65292;&#20854;&#20013;&#26469;&#33258;&#31532;&#19968;&#20010;&#34920;&#30340;&#34892;&#22914;&#26524;&#23384;&#22312;&#23545;&#24212;&#20110;&#31532;&#20108;&#20010;&#34920;&#30340;&#34892;&#65292;&#21017;&#36820;&#22238;&#35813;&#34892;&#65307;&#21542;&#21017;&#36820;&#22238; null &#20540;&#12290;<\/p>\n<ul>\n<li>&#21487;&#20197;&#23558; &#8220;left&#8221; &#25324;&#21495;&#28155;&#21152;&#21040; SELECT &#35821;&#21477;&#26469;&#25351;&#23450;&#24038;&#36830;&#25509;&#12290;<\/li>\n<li>&#31034;&#20363;&#65306;<\/li>\n<\/ul>\n<pre><code class=\"language-php\">$users = User::with('roles')-&gt;get();\n$roles = Role::all();\n\n$joinedUsers = $users-&gt;leftJoin($roles, 'users.id', '=', 'roles.user_id');<\/code><\/pre>\n<p><strong>&#36755;&#20986;<\/strong>&#65306;<\/p>\n<pre><code class=\"language-json\">[\n    {\n        \"id\": 1,\n        \"name\": \"John Doe\",\n        \"email\": \"john.doe@example.com\",\n        \"roles\": [\n            {\n                \"id\": 1,\n                \"name\": \"Admin\"\n            }\n        ]\n    },\n    \/\/ ... &#20854;&#20182;&#29992;&#25143;\n]<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#39318;&#20808;&#33719;&#21462;&#20102;&#25152;&#26377;&#29992;&#25143;&#30340;&#21015;&#34920;&#65292;&#28982;&#21518;&#36890;&#36807; <code>Role<\/code> &#34920;&#26684;&#30340;&#20851;&#32852;&#23383;&#27573; <code>user_id<\/code> &#36827;&#34892;&#24038;&#36830;&#25509;&#65292;&#20174;&#32780;&#24471;&#21040;&#27599;&#20010;&#29992;&#25143;&#19982;&#20854;&#23545;&#24212;&#30340;&#35282;&#33394;&#20449;&#24687;&#12290;<\/p>\n<h3>&#21491;&#36830;&#25509;&#65288;RIGHT JOIN&#65289;<\/h3>\n<p><strong>&#27010;&#24565;<\/strong>&#65306;&#21491;&#36830;&#25509;&#36820;&#22238;&#20004;&#20010;&#34920;&#30340;&#25152;&#26377;&#34892;&#65292;&#20854;&#20013;&#26469;&#33258;&#31532;&#20108;&#20010;&#34920;&#30340;&#34892;&#22914;&#26524;&#23384;&#22312;&#23545;&#24212;&#20110;&#31532;&#19968;&#20010;&#34920;&#30340;&#34892;&#65292;&#21017;&#36820;&#22238;&#35813;&#34892;&#65307;&#21542;&#21017;&#36820;&#22238; null &#20540;&#12290;<\/p>\n<ul>\n<li>&#21487;&#20197;&#23558; &#8220;right&#8221; &#25324;&#21495;&#28155;&#21152;&#21040; SELECT &#35821;&#21477;&#26469;&#25351;&#23450;&#21491;&#36830;&#25509;&#12290;<\/li>\n<li>&#31034;&#20363;&#65306;<\/li>\n<\/ul>\n<pre><code class=\"language-php\">$users = User::with('roles')-&gt;get();\n$roles = Role::all();\n\n$joinedRoles = $roles-&gt;leftJoin($users, 'roles.user_id', '=', 'users.id');<\/code><\/pre>\n<p><strong>&#36755;&#20986;<\/strong>&#65306;<\/p>\n<pre><code class=\"language-json\">[\n    {\n        \"id\": 1,\n        \"name\": \"John Doe\",\n        \"email\": \"john.doe@example.com\",\n        \"roles\": [\n            {\n                \"id\": 1,\n                \"name\": \"Admin\"\n            }\n        ]\n    },\n    \/\/ ... &#20854;&#20182;&#35282;&#33394;\n]<\/code><\/pre>\n<p>&#36825;&#20010;&#20363;&#23376;&#19982;&#19978;&#38754;&#30340;&#20363;&#23376;&#30456;&#20284;&#65292;&#20294;&#36825;&#37324;&#26159;&#36890;&#36807; <code>User<\/code> &#34920;&#26684;&#30340;&#20851;&#32852;&#23383;&#27573; <code>user_id<\/code> &#36827;&#34892;&#21491;&#36830;&#25509;&#65292;&#36825;&#26679;&#21487;&#20197;&#24471;&#21040;&#27599;&#20010;&#35282;&#33394;&#19982;&#20854;&#23545;&#24212;&#30340;&#29992;&#25143;&#20449;&#24687;&#12290;<\/p>\n<h3>&#27880;&#24847;&#20107;&#39033;<\/h3>\n<ul>\n<li>&#22312;&#20351;&#29992; LEFT JOIN &#25110; RIGHT JOIN &#26102;&#65292;&#35831;&#30830;&#20445;&#20004;&#20010;&#34920;&#20855;&#26377;&#30456;&#21516;&#30340;&#23383;&#27573;&#21517;&#31216;&#20316;&#20026;&#20851;&#32852;&#23383;&#27573;&#65292;&#24182;&#19988;&#20851;&#32852;&#23383;&#27573;&#30340;&#25968;&#25454;&#31867;&#22411;&#20063;&#20860;&#23481;&#12290;<\/li>\n<li>&#22914;&#26524;&#38656;&#35201;&#23545;&#22810;&#20010;&#34920;&#36827;&#34892;&#36830;&#25509;&#65292;&#21487;&#20197;&#32771;&#34385;&#20351;&#29992;&#22810;&#34920;&#20851;&#32852;&#35821;&#27861;&#65292;&#22914; <code>JOIN<\/code> &#35821;&#21477;&#31561;&#12290;<\/li>\n<\/ul>\n<p>&#24076;&#26395;&#36825;&#23545;&#20320;&#26377;&#25152;&#24110;&#21161;&#65281;&#22914;&#26524;&#20320;&#26377;&#26356;&#22810;&#20851;&#20110; Laravel &#30340;&#38382;&#39064;&#25110;&#32773;&#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; Laravel &#20013;&#65292;&#26597;&#35810;&#26500;&#36896;&#22120;&#25552;&#20379;&#20102;&#24378;&#22823;&#30340;&#21151;&#038;#3..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[44],"tuisongtax":[],"class_list":["post-922","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\/922","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=922"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=922"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=922"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=922"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}