{"id":1012,"date":"2025-06-12T04:50:46","date_gmt":"2025-06-11T20:50:46","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/1012.html"},"modified":"2025-06-12T04:50:46","modified_gmt":"2025-06-11T20:50:46","slug":"%e5%9c%a8-laravel-eloquent-%e4%b8%ad%e4%bd%bf%e7%94%a8%e5%8f%b3%e8%bf%9e%e6%8e%a5","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/1012.html","title":{"rendered":"\u5728 Laravel Eloquent \u4e2d\u4f7f\u7528\u201c\u53f3\u8fde\u63a5\u201d"},"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 Eloquent &#20013;&#65292;&#8221;&#21491;&#36830;&#25509;&#8221;&#65288;Right Join&#65289;&#26159;&#19968;&#31181;&#29992;&#20110;&#20174;&#20004;&#20010;&#34920;&#20013;&#33719;&#21462;&#25968;&#25454;&#30340;&#26041;&#27861;&#65292;&#20854;&#20013;&#32467;&#26524;&#38598;&#21253;&#25324;&#24038;&#34920;&#21644;&#21491;&#34920;&#20013;&#30340;&#25152;&#26377;&#35760;&#24405;&#65292;&#24182;&#19988;&#21482;&#26174;&#31034;&#24038;&#34920;&#20013;&#27809;&#26377;&#21305;&#37197;&#39033;&#30340;&#35760;&#24405;&#12290;&#36825;&#31181;&#36830;&#25509;&#26041;&#24335;&#36890;&#24120;&#29992;&#20110;&#38656;&#35201;&#26597;&#25214;&#26576;&#20010;&#26465;&#20214;&#19979;&#30340;&#20851;&#32852;&#35760;&#24405;&#26102;&#12290;<\/p>\n<p>&#20551;&#35774;&#25105;&#20204;&#26377;&#20004;&#20010;&#27169;&#22411;&#65306;<code>User<\/code> &#21644; <code>Order<\/code>&#65292;&#23427;&#20204;&#20043;&#38388;&#36890;&#36807; <code>orders<\/code> &#20851;&#32852;&#20851;&#31995;&#36827;&#34892;&#20851;&#32852;&#12290;&#25105;&#20204;&#35201;&#26597;&#35810;&#25152;&#26377;&#29992;&#25143;&#21450;&#20854;&#26410;&#23436;&#25104;&#30340;&#35746;&#21333;&#12290;<\/p>\n<p>&#39318;&#20808;&#65292;&#30830;&#20445;&#25105;&#20204;&#22312; <code>User<\/code> &#27169;&#22411;&#20013;&#23450;&#20041;&#20102; <code>orders<\/code> &#20851;&#32852;&#65306;<\/p>\n<pre><code class=\"language-php\">\/\/ app\/Models\/User.php\n\nnamespace AppModels;\n\nuse IlluminateDatabaseEloquentModel;\nuse IlluminateDatabaseEloquentRelationsHasMany;\n\nclass User extends Model\n{\n    public function orders()\n    {\n        return $this-&gt;hasMany(Order::class);\n    }\n}<\/code><\/pre>\n<p>&#25509;&#19979;&#26469;&#65292;&#25105;&#20204;&#22312; <code>Order<\/code> &#27169;&#22411;&#20013;&#23450;&#20041;&#20102; <code>user<\/code> &#20851;&#32852;&#65306;<\/p>\n<pre><code class=\"language-php\">\/\/ app\/Models\/Order.php\n\nnamespace AppModels;\n\nuse IlluminateDatabaseEloquentModel;\nuse IlluminateDatabaseEloquentRelationsbelongsTo;\n\nclass Order extends Model\n{\n    public function user()\n    {\n        return $this-&gt;belongsTo(User::class);\n    }\n}<\/code><\/pre>\n<p>&#29616;&#22312;&#65292;&#25105;&#20204;&#21487;&#20197;&#20351;&#29992; &#8220;&#21491;&#36830;&#25509;&#8221; &#26469;&#26597;&#35810;&#25152;&#26377;&#29992;&#25143;&#21450;&#20854;&#26410;&#23436;&#25104;&#30340;&#35746;&#21333;&#65306;<\/p>\n<pre><code class=\"language-php\">use AppModelsUser;\n\n$usersWithOrders = User::with('orders')-&gt;whereHas('orders', function ($query) {\n    $query-&gt;where('status', '!=', 'completed');\n})-&gt;get();\n\nforeach ($usersWithOrders as $user) {\n    echo \"User: {$user-&gt;name}n\";\n    foreach ($user-&gt;orders as $order) {\n        echo \"- Order ID: {$order-&gt;id}, Status: {$order-&gt;status}n\";\n    }\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#31034;&#20363;&#20013;&#65292;&#25105;&#20204;&#20351;&#29992;&#20102; <code>with<\/code> &#26041;&#27861;&#26469;&#21152;&#36733; <code>orders<\/code> &#20851;&#31995;&#65292;&#24182;&#20351;&#29992; <code>whereHas<\/code> &#26041;&#27861;&#26469;&#36807;&#28388;&#20986;&#26410;&#23436;&#25104;&#30340;&#35746;&#21333;&#12290;&#36825;&#26679;&#65292;&#25105;&#20204;&#23601;&#21487;&#20197;&#24471;&#21040;&#25152;&#26377;&#29992;&#25143;&#21450;&#20854;&#26410;&#23436;&#25104;&#30340;&#35746;&#21333;&#20449;&#24687;&#12290;<\/p>\n<p>&#24076;&#26395;&#36825;&#20010;&#31034;&#20363;&#33021;&#24110;&#21161;&#20320;&#22312; Laravel Eloquent &#20013;&#20351;&#29992; &#8220;&#21491;&#36830;&#25509;&#8221;&#12290;&#22914;&#26524;&#20320;&#26377;&#20219;&#20309;&#20854;&#20182;&#38382;&#39064;&#65292;&#35831;&#38543;&#26102;&#25552;&#38382;&#65281;<\/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>&#20171;&#32461;<\/h3><p>Laravel Eloquent &#26159;&#19968;&#20010;&#24378;&#22823;&#30340;ORM&#65288;&#23545;&#35937;&#20851;&#31995;&#26144;&#23556;&#65289;&#24037;&#20855;&#65292;&#29992;&#20110;PHP&#24212;&#29992;&#20013;&#30340;&#25968;&#25454;&#24211;&#25805;&#20316;&#12290;&#23427;&#20801;&#35768;&#24320;&#21457;&#20154;&#21592;&#20197;&#38754;&#21521;&#23545;&#35937;&#30340;&#26041;&#24335;&#22788;&#29702;&#25968;&#25454;&#24211;&#26597;&#35810;&#12290;&#34429;&#28982; Eloquent &#26356;&#21916;&#27426;&#20351;&#29992;&#20851;&#31995;&#32780;&#19981;&#26159;&#36830;&#25509;&#65292;&#20294;&#22312;&#22788;&#29702;&#22797;&#26434;&#26597;&#35810;&#26102;&#65292;&lsquo;JOIN&rsquo; &#35821;&#21477;&#26356;&#20026;&#26377;&#30410;&#12290;&#26412;&#25945;&#31243;&#23558;&#25351;&#23548;&#24744;&#22914;&#20309;&#22312; Laravel Eloquent &#20013;&#23454;&#29616; &#8216;RIGHT JOIN&#8217;&#65292;&#24182;&#38468;&#26377;&#22810;&#20010;&#20195;&#30721;&#31034;&#20363;&#12290;<\/p><h3>&#29702;&#35299;&#36830;&#25509;&#21644;RIGHT JOIN<\/h3><p>&#22312;&#28145;&#20837;&#25506;&#35752;&ldquo;RIGHT JOIN&rdquo;&#20043;&#21069;&#65292;&#35753;&#25105;&#20204;&#20808;&#28548;&#28165;&#19968;&#19979;JOIN&#25805;&#20316;&#30340;&#27010;&#24565;&#12290;&#22312;SQL&#20013;&#65292;JOIN&#23376;&#21477;&#29992;&#20110;&#20174;&#20004;&#20010;&#25110;&#22810;&#20010;&#34920;&#20013;&#21512;&#24182;&#34892;&#65292;&#22522;&#20110;&#23427;&#20204;&#20043;&#38388;&#30340;&#30456;&#20851;&#21015;&#12290;&#21491;&#36830;&#25509;&#65288;&#20063;&#31216;&#20026;&#22806;&#36830;&#25509;&#65289;&#36820;&#22238;&#26469;&#33258;&#21491;&#20391;&#34920;&#65288;&#34920;2&#65289;&#30340;&#25152;&#26377;&#35760;&#24405;&#20197;&#21450;&#24038;&#20391;&#34920;&#65288;&#34920;1&#65289;&#19982;&#20043;&#21305;&#37197;&#30340;&#35760;&#24405;&#12290;&#22914;&#26524;&#27809;&#26377;&#21305;&#37197;&#39033;&#65292;&#21017;&#24038;&#34920;&#20013;&#30340;&#35760;&#24405;&#23558;&#36820;&#22238;NULL&#20540;&#12290;<\/p><h3>&#22522;&#26412;&#30340;RIGHT JOIN&#22312;Eloquent&#20013;&#30340;&#23454;&#29616;&#12290;<\/h3><p>&#39318;&#20808;&#65292;&#35753;&#25105;&#20204;&#26469;&#30475;&#30475;Laravel Eloquent&#20013;&#30340;&#22522;&#26412;&ldquo;&#21491;&#36830;&#25509;&rdquo;&#25805;&#20316;&#12290;&#20551;&#35774;&#25105;&#20204;&#26377;&#20004;&#20010;&#34920;&mdash;&mdash;users&#65288;id, name&#65289;&#21644;posts&#65288;user_id, title&#65289;&#65292;&#20854;&#20013;&#27599;&#20010;&#24086;&#23376;&#37117;&#23646;&#20110;&#19968;&#20010;&#29992;&#25143;&#12290;<\/p><pre><code>$posts = DB::table('posts')\n    -&gt;rightJoin('users', 'posts.user_id', '=', 'users.id')\n    -&gt;get();\n<\/code><\/pre><p>&#36825;&#23558;&#36820;&#22238;&#25152;&#26377;&#29992;&#25143;&#21450;&#20854;&#24086;&#23376;&#65292;&#21363;&#20351;&#20182;&#20204;&#36824;&#27809;&#26377;&#21457;&#24067;&#20219;&#20309;&#24086;&#23376;&#12290;<\/p><p>&#35760;&#24471;Laravel&#30340;Eloquent&#24182;&#27809;&#26377;&#25552;&#20379;&#26126;&#30830;&#30340;rightJoin&#26041;&#27861;&#26469;&#26500;&#24314;&#20851;&#31995;&#26597;&#35810;&#65292;&#36825;&#26159;&#22240;&#20026;&#20854;Active Record&#23454;&#29616;&#26041;&#24335;&#25152;&#33268;&#12290;&#30456;&#21453;&#65292;&#36825;&#20123;&#36830;&#25509;&#26159;&#36890;&#36807;&#24213;&#23618;&#30340;Query Builder&#26500;&#36896;&#20986;&#26469;&#30340;&#12290;<\/p><h3>&#21491;&#36830;&#25509;&#65288;Right Join&#65289;&#19982;&#26465;&#20214;&#34920;&#36798;&#24335;<\/h3><p>&#29616;&#22312;&#35753;&#25105;&#20204;&#28155;&#21152;&#19968;&#20010;&#26465;&#20214;&#21040;&#25105;&#20204;&#30340;&#36830;&#25509;&#25805;&#20316;&#20013;&#12290;&#20363;&#22914;&#65292;&#25105;&#20204;&#21482;&#24819;&#26597;&#30475;&#21253;&#21547;&#20851;&#38190;&#35789;&ldquo;Laravel&rdquo;&#30340;&#24086;&#23376;&#12290;<\/p><pre><code>$posts = DB::table('posts')\n    -&gt;rightJoin('users', 'posts.user_id', '=', 'users.id')\n    -&gt;where('posts.title', 'LIKE', '%Laravel%')\n    -&gt;get();\n<\/code><\/pre><p>&#36825;&#23558;&#36807;&#28388;&#32467;&#26524;&#65292;&#21482;&#21253;&#25324;&#26631;&#39064;&#20013;&#21253;&#21547;&ldquo;Laravel&rdquo;&#30340;&#29992;&#25143;&#24086;&#23376;&#12290;<\/p><h3>&#39640;&#32423;&#30340;&#21491;&#36830;&#25509;&#65288;RIGHT JOIN&#65289;&#19982;&#32858;&#21512;&#20989;&#25968;<\/h3><p>&#24403;&#25105;&#20204;&#35848;&#21040;&ldquo;RIGHT JOIN&rdquo;&#30340;&#39640;&#32423;&#29992;&#27861;&#26102;&#65292;&#25105;&#20204;&#36824;&#21487;&#20197;&#32467;&#21512;&#32858;&#21512;&#20989;&#25968;&#22914;COUNT&#12289;MAX&#21644;SUM&#12290;&#36825;&#37324;&#26159;&#22914;&#20309;&#25353;&#27599;&#20010;&#29992;&#25143;&#35745;&#25968;&#24086;&#23376;&#30340;&#31034;&#20363;&#65306;<\/p><pre><code>$users = DB::table('users')\n    -&gt;rightJoin('posts', 'users.id', '=', 'posts.user_id')\n    -&gt;select('users.*', DB::raw('COUNT(posts.id) as post_count'))\n    -&gt;groupBy('users.id')\n    -&gt;get();\n<\/code><\/pre><p>&#22312;&#36825;&#31181;&#24773;&#20917;&#19979;&#65292;&#25105;&#20204;&#20351;&#29992;DB::raw()&#21521;&#26597;&#35810;&#20013;&#27880;&#20837;&#21407;&#22987;SQL&#12290;&#28982;&#21518;&#65292;groupBy&#26041;&#27861;&#30830;&#20445;&#25105;&#20204;&#24471;&#21040;&#27599;&#20010;&#29992;&#25143;&#30340;&#25991;&#31456;&#25968;&#37327;&#30340;&#35745;&#25968;&#12290;<\/p><h3>&#23884;&#22871;&#36830;&#25509;&#65288;RIGHT JOIN&#65289;<\/h3><p>Eloquent&#20063;&#20801;&#35768;&#25105;&#20204;&#25191;&#34892;&#23884;&#22871;&#30340;&#36830;&#25509;&#12290;&#19979;&#38754;&#26159;&#23884;&#22871;&#30340;&#21491;&#36830;&#25509;&#30340;&#19968;&#20010;&#20363;&#23376;&#65306;<\/p><pre><code>$users = DB::table('users')\n    -&gt;rightJoin('posts', 'users.id', '=', 'posts.user_id')\n    -&gt;rightJoin('comments', 'posts.id', '=', 'comments.post_id')\n    -&gt;select('users.*', 'posts.title', 'comments.body')\n    -&gt;get();\n<\/code><\/pre><p>&#36825;&#26465;&#20195;&#30721;&#19981;&#20165;&#23545;&#24086;&#23376;&#34920;&#36827;&#34892;&#21491;&#36830;&#25509;&#65292;&#36824;&#23545;&#35780;&#35770;&#34920;&#36827;&#34892;&#20102;&#21491;&#36830;&#25509;&#12290;&#24403;&#24744;&#24076;&#26395;&#33719;&#21462;&#25152;&#26377;&#29992;&#25143;&#12289;&#20182;&#20204;&#30340;&#24086;&#23376;&#21644;&#20182;&#20204;&#30340;&#35780;&#35770;&#65288;&#26080;&#35770;&#24086;&#23376;&#25110;&#35780;&#35770;&#26159;&#21542;&#23384;&#22312;&#65289;&#26102;&#65292;&#36825;&#20010;&#26597;&#35810;&#38750;&#24120;&#26377;&#29992;&#12290;<\/p><h3>&#21491;&#36830;&#25509;&#65288;Right Join&#65289;&#22312;Eloquent&#20851;&#31995;&#27169;&#22411;&#20013;&#24182;&#19981;&#24120;&#29992;&#65292;&#22240;&#20026;&#36890;&#24120;&#24773;&#20917;&#19979;&#65292;&#24038;&#36830;&#25509;&#65288;Left Join&#65289;&#12289;&#20869;&#36830;&#25509;&#65288;Inner Join&#65289;&#21644;&#20840;&#22806;&#36830;&#25509;&#65288;Full Outer Join&#65289;&#24050;&#32463;&#36275;&#22815;&#28385;&#36275;&#22823;&#22810;&#25968;&#38656;&#27714;&#12290;&#22914;&#26524;&#20320;&#38656;&#35201;&#20351;&#29992;&#21491;&#36830;&#25509;&#65292;&#35831;&#30830;&#20445;&#29702;&#35299;&#20854;&#32972;&#21518;&#30340;&#36923;&#36753;&#65292;&#24182;&#26681;&#25454;&#23454;&#38469;&#19994;&#21153;&#38656;&#27714;&#36873;&#25321;&#21512;&#36866;&#30340;&#36830;&#25509;&#26041;&#24335;&#12290;<\/h3><p>&#23613;&#31649;&#30452;&#25509;&#20351;&#29992;&#32852;&#25509;&#21487;&#33021;&#20250;&#36829;&#32972;Eloquent ORM&#30340;&#21746;&#23398;&#65292;&#20294;&#22312;&#22788;&#29702;Eloquent&#20851;&#31995;&#26102;&#65292;&#26377;&#26102;&#30830;&#23454;&#38656;&#35201;&#36825;&#26679;&#20570;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#20351;&#29992;RIGHT JOIN&#30340;&#26041;&#27861;&#65306;<\/p><pre><code>User::rightJoin('posts', 'users.id', '=', 'posts.user_id')\n    -&gt;get(['users.*', 'posts.title as post_title']);\n<\/code><\/pre><p>&#36825;&#31181;&#26041;&#27861;&#32467;&#21512;&#20102;Eloquent ORM&#30340;&#20248;&#38597;&#24615;&#19982;SQL&#36830;&#25509;&#25805;&#20316;&#30340;&#21147;&#37327;&#12290;&#25105;&#20204;&#30452;&#25509;&#35843;&#29992;User&#27169;&#22411;&#19978;&#30340;rightJoin&#26041;&#27861;&#65292;&#32780;&#19981;&#26159;&#20351;&#29992;DB&#24037;&#21378;&#12290;<\/p><h3>&#32467;&#35770;&#12290;<\/h3><p>&#22312;&#26412;&#25351;&#21335;&#20013;&#65292;&#25105;&#20204;&#24050;&#32463;&#25506;&#35752;&#20102;&#22914;&#20309;&#22312;Laravel Eloquent&#20013;&#20351;&#29992;&ldquo;RIGHT JOIN&rdquo;&#65292;&#24182;&#20197;&#20174;&#22522;&#30784;&#21040;&#22797;&#26434;&#30340;&#31034;&#20363;&#36827;&#34892;&#20102;&#22810;&#20010;&#35828;&#26126;&#12290;&#34429;&#28982;Eloquent&#26356;&#20542;&#21521;&#20110;&#20351;&#29992;&#20851;&#31995;&#26469;&#31616;&#21270;&#23545;&#35937;&#26144;&#23556;&#65292;&#20294;&#32852;&#25509;&#26159;&#19968;&#31181;&#24378;&#22823;&#30340;&#24037;&#20855;&#65292;&#29992;&#20110;&#21019;&#24314;&#26356;&#20855;&#22797;&#26434;&#24615;&#30340;&#26597;&#35810;&#65292;&#36825;&#20123;&#26597;&#35810;&#22312;&#20854;&#20182;&#24773;&#20917;&#19979;&#21487;&#33021;&#38590;&#20197;&#29992;&#20851;&#31995;&#34920;&#31034;&#12290;&#27491;&#30830;&#29702;&#35299;&#21644;&#20351;&#29992;&ldquo;RIGHT JOIN&rdquo;&#21487;&#20197;&#26174;&#33879;&#22686;&#24378;&#24744;&#30340;&#24212;&#29992;&#31243;&#24207;&#30340;&#25968;&#25454;&#26816;&#32034;&#33021;&#21147;&#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 Eloquent &#27169;&#22411;&#20013;&#23454;&#29616;&#21491;&#36830;&#25509;&#65288;Right Join&#65289;&#26102;&#65292;&#20320;&#38656;&#35201;&#36981;&#24490;&#20197;&#19979;&#27493;&#39588;&#65306;<\/p>\n<ol>\n<li>\n<p>&#39318;&#20808;&#30830;&#20445;&#20320;&#26377;&#19968;&#20010;&#25968;&#25454;&#24211;&#34920;&#21644;&#19968;&#20010;Eloquent&#27169;&#22411;&#12290;&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#20551;&#35774;&#26377;&#19968;&#20010;&#21517;&#20026; <code>users<\/code> &#30340;&#25968;&#25454;&#24211;&#34920;&#65292;&#23427;&#26377;&#19977;&#20010;&#23383;&#27573;&#65306;id, name &#21644; email&#12290;<\/p>\n<\/li>\n<li>\n<p>&#21019;&#24314;&#19968;&#20010; Eloquent &#31867;&#26469;&#34920;&#31034;&#29992;&#25143;&#27169;&#22411;&#12290;&#20363;&#22914;&#65306;<\/p>\n<\/li>\n<\/ol>\n<pre><code class=\"language-php\">use IlluminateDatabaseEloquentModel;\n\nclass User extends Model\n{\n    protected $table = 'users';\n\n    \/\/ &#20854;&#20182;&#23646;&#24615;...\n}<\/code><\/pre>\n<ol start=\"3\">\n<li>&#22312;&#21478;&#19968;&#20010;&#31867;&#20013;&#65292;&#23450;&#20041;&#19968;&#20010;&#26041;&#27861;&#26469;&#25191;&#34892;&#21491;&#36830;&#25509;&#12290;&#36825;&#20010;&#26041;&#27861;&#23558;&#36820;&#22238;&#19968;&#20010;&#26032;&#30340;&#26597;&#35810;&#38598;&#21512;&#65292;&#35813;&#38598;&#21512;&#21253;&#21547;&#20102;&#20004;&#20010;&#34920;&#30340;&#21305;&#37197;&#34892;&#65292;&#20854;&#20013;&#19968;&#20010;&#34920;&#26159;&#21478;&#19968;&#20010;&#34920;&#30340;&#25152;&#26377;&#21015;&#65292;&#20294;&#19981;&#21253;&#25324;&#20027;&#38190;&#12290;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#23558;&#20351;&#29992; <code>left join<\/code> &#19982; <code>right join<\/code> &#26469;&#33719;&#21462;&#25152;&#26377;&#29992;&#25143;&#30340;&#32852;&#31995;&#20449;&#24687;&#65292;&#24182;&#25490;&#38500;&#24050;&#23384;&#22312;&#30340;&#32852;&#31995;&#20154;&#12290;<\/li>\n<\/ol>\n<pre><code class=\"language-php\">public function getContacts()\n{\n    return $this-&gt;join('contacts', 'users.id', '=', 'contacts.user_id')\n                -&gt;select(['users.*', 'contacts.name as contact_name'])\n                -&gt;whereNull('contacts.email')\n                -&gt;orderBy('name');\n}<\/code><\/pre>\n<ol start=\"4\">\n<li>&#35843;&#29992;&#27492;&#26041;&#27861;&#24182;&#23558;&#20854;&#20256;&#36882;&#32473; <code>get()<\/code> &#26041;&#27861;&#65292;&#20197;&#20415;&#20174;&#25968;&#25454;&#24211;&#20013;&#26816;&#32034;&#25968;&#25454;&#65306;<\/li>\n<\/ol>\n<pre><code class=\"language-php\">$contacts = $user-&gt;getContacts();<\/code><\/pre>\n<ol start=\"5\">\n<li>&#20351;&#29992; <code>$contacts<\/code> &#21464;&#37327;&#35775;&#38382;&#32467;&#26524;&#38598;&#65292;&#21487;&#20197;&#36941;&#21382;&#27599;&#20010;&#32852;&#31995;&#20154;&#30340;&#35814;&#32454;&#20449;&#24687;&#12290;<\/li>\n<\/ol>\n<pre><code class=\"language-php\">foreach ($contacts as $contact) {\n    echo \"Name: {$contact['name']}, Email: {$contact['email']}n\";\n}<\/code><\/pre>\n<ol start=\"6\">\n<li>&#20320;&#21487;&#20197;&#26681;&#25454;&#38656;&#35201;&#20462;&#25913; <code>User<\/code> &#31867;&#20013;&#30340;&#20854;&#20182;&#23646;&#24615;&#20197;&#28385;&#36275;&#29305;&#23450;&#38656;&#27714;&#12290;&#20363;&#22914;&#65292;&#22914;&#26524;&#24819;&#35201;&#26174;&#31034;&#27599;&#20010;&#32852;&#31995;&#20154;&#30340;&#30005;&#23376;&#37038;&#20214;&#22320;&#22336;&#65292;&#21487;&#20197;&#22312; <code>getContacts()<\/code> &#26041;&#27861;&#20013;&#28155;&#21152;&#39069;&#22806;&#30340;&#26597;&#35810;&#26465;&#20214;&#12290;<\/li>\n<\/ol>\n<p>&#36825;&#26159;&#19968;&#20010;&#22522;&#26412;&#30340;&#31034;&#20363;&#65292;&#23637;&#31034;&#20102;&#22914;&#20309;&#22312; Laravel Eloquent &#20013;&#20351;&#29992;&#21491;&#36830;&#25509;&#12290;&#22914;&#26524;&#20320;&#26377;&#26356;&#22810;&#30340;&#38382;&#39064;&#25110;&#32773;&#38656;&#35201;&#36827;&#19968;&#27493;&#30340;&#24110;&#21161;&#65292;&#35831;&#38543;&#26102;&#21578;&#35785;&#25105;&#65281;<\/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 Eloquent &#20013;&#65292;&#8221;&#21491;&#36830;&#25509;&#8221;&#65288;Right Join&#65289;&#26159;&#19968;&#31181;&#038;#..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[44],"tuisongtax":[],"class_list":["post-1012","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\/1012","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=1012"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=1012"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=1012"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=1012"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}