{"id":997,"date":"2025-06-12T04:30:01","date_gmt":"2025-06-11T20:30:01","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/997.html"},"modified":"2025-06-12T04:30:01","modified_gmt":"2025-06-11T20:30:01","slug":"laravel-eloquent%ef%bc%9a%e5%a6%82%e4%bd%95%e5%88%9b%e5%bb%ba%e6%97%a0%e9%99%90%e6%bb%9a%e5%8a%a8%e5%88%86%e9%a1%b5","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/997.html","title":{"rendered":"Laravel Eloquent\uff1a\u5982\u4f55\u521b\u5efa\u2018\u65e0\u9650\u6eda\u52a8\u2019\u5206\u9875"},"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;&#23454;&#29616; &#8216;&#26080;&#38480;&#28378;&#21160;&#8217; &#20998;&#39029;&#36890;&#24120;&#28041;&#21450;&#21040;&#20351;&#29992;&#25968;&#25454;&#24211;&#26597;&#35810;&#26469;&#33719;&#21462;&#25968;&#25454;&#65292;&#24182;&#36890;&#36807; JavaScript &#21644; AJAX &#26469;&#21152;&#36733;&#26356;&#22810;&#25968;&#25454;&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;&#31616;&#21333;&#30340;&#31034;&#20363;&#65292;&#23637;&#31034;&#20102;&#22914;&#20309;&#22312; Laravel &#20013;&#23454;&#29616;&#36825;&#19968;&#21151;&#33021;&#12290;<\/p>\n<h3>1. &#23433;&#35013;&#24517;&#35201;&#30340;&#21253;<\/h3>\n<p>&#39318;&#20808;&#65292;&#30830;&#20445;&#20320;&#24050;&#32463;&#23433;&#35013;&#20102; <code>pagination<\/code> &#21253;&#65306;<\/p>\n<pre><code class=\"language-bash\">composer require laravel\/pagination<\/code><\/pre>\n<h3>2. &#21019;&#24314;&#27169;&#22411;&#21644;&#25511;&#21046;&#22120;<\/h3>\n<p>&#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010;&#21517;&#20026; <code>Post<\/code> &#30340;&#27169;&#22411;&#65292;&#27599;&#20010;&#24086;&#23376;&#37117;&#26377;&#19968;&#20010; <code>created_at<\/code> &#23383;&#27573;&#12290;<\/p>\n<h4>&#27169;&#22411;&#65288;App\/Models\/Post.php&#65289;<\/h4>\n<pre><code class=\"language-php\">namespace AppModels;\n\nuse IlluminateDatabaseEloquentModel;\nuse IlluminatePaginationPaginator;\n\nclass Post extends Model\n{\n    protected $fillable = ['title', 'content'];\n\n    public function scopePaginated($query, $limit)\n    {\n        return Paginator::make($query-&gt;orderBy('created_at', 'desc'), $limit);\n    }\n}<\/code><\/pre>\n<h4>&#25511;&#21046;&#22120;&#65288;App\/Http\/Controllers\/PostsController.php&#65289;<\/h4>\n<pre><code class=\"language-php\">namespace AppHttpControllers;\n\nuse AppModelsPost;\nuse IlluminateHttpRequest;\n\nclass PostsController extends Controller\n{\n    public function index(Request $request)\n    {\n        \/\/ &#33719;&#21462;&#24403;&#21069;&#39029;&#30721;&#65292;&#40664;&#35748;&#20026;1\n        $page = $request-&gt;input('page', 1);\n\n        \/\/ &#27599;&#39029;&#26174;&#31034;&#30340;&#26465;&#25968;\n        $perPage = 5;\n\n        \/\/ &#20351;&#29992; paginate &#26041;&#27861;&#33719;&#21462;&#20998;&#39029;&#32467;&#26524;\n        $posts = Post::paginate($perPage);\n\n        return view('posts.index', compact('posts'));\n    }\n\n    public function loadMore(Request $request)\n    {\n        \/\/ &#33719;&#21462;&#24403;&#21069;&#39029;&#30721;\n        $page = $request-&gt;input('page');\n\n        \/\/ &#27599;&#39029;&#26174;&#31034;&#30340;&#26465;&#25968;\n        $perPage = 5;\n\n        \/\/ &#20351;&#29992; paginate &#26041;&#27861;&#33719;&#21462;&#20998;&#39029;&#32467;&#26524;\n        $nextPagePosts = Post::paginate($perPage, $page + 1);\n\n        \/\/ &#23558;&#19979;&#19968;&#39029;&#30340;&#25968;&#25454;&#36716;&#25442;&#20026;&#25968;&#32452;\n        $nextPagePostsArray = $nextPagePosts-&gt;toArray();\n\n        \/\/ &#36820;&#22238; JSON &#21709;&#24212;\n        return response()-&gt;json(['data' =&gt; $nextPagePostsArray['items']]);\n    }\n}<\/code><\/pre>\n<h3>3. &#21019;&#24314;&#35270;&#22270;<\/h3>\n<p>&#22312; <code>resources\/views\/posts\/index.blade.php<\/code> &#20013;&#28155;&#21152;&#20998;&#39029;&#25511;&#20214;&#21644;&#21152;&#36733;&#26356;&#22810;&#25353;&#38062;&#65306;<\/p>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n    &lt;meta charset=\"UTF-8\"&gt;\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\n    &lt;title&gt;Infinite Scroll Pagination in Laravel&lt;\/title&gt;\n    &lt;script src=\"https:\/\/code.jquery.com\/jquery-3.6.0.min.js\"&gt;&lt;\/script&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;div id=\"posts-container\"&gt;\n        @foreach ($posts as $post)\n            &lt;div class=\"post\"&gt;\n                &lt;h3&gt;{{ $post-&gt;title }}&lt;\/h3&gt;\n                &lt;p&gt;{{ $post-&gt;content }}&lt;\/p&gt;\n            &lt;\/div&gt;\n        @endforeach\n    &lt;\/div&gt;\n\n    &lt;button id=\"load-more-button\"&gt;Load More&lt;\/button&gt;\n\n    &lt;script&gt;\n        $(document).ready(function() {\n            let currentPage = 1;\n\n            $('#load-more-button').click(function() {\n                $.ajax({\n                    url: '\/posts\/load-more',\n                    type: 'POST',\n                    data: { page: currentPage },\n                    success: function(response) {\n                        if (response.data.length &gt; 0) {\n                            currentPage++;\n                            $('.posts-container').append(response.data.map(post =&gt; `&lt;div class=\"post\"&gt;${post.title} - ${post.content}&lt;\/div&gt;`));\n                        } else {\n                            $('#load-more-button').hide();\n                        }\n                    }\n                });\n            });\n\n            \/\/ &#21021;&#22987;&#21270;&#26102;&#21152;&#36733;&#31532;&#19968;&#39029;&#25968;&#25454;\n            $.ajax({\n                url: '\/posts',\n                type: 'GET',\n                success: function(response) {\n                    if (response.data.length &gt; 0) {\n                        $('.posts-container').append(response.data.map(post =&gt; `&lt;div class=\"post\"&gt;${post.title} - ${post.content}&lt;\/div&gt;`));\n                    } else {\n                        $('#load-more-button').hide();\n                    }\n                }\n            });\n        });\n    &lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<h3>4. &#37197;&#32622;&#36335;&#30001;<\/h3>\n<p>&#22312; <code>routes\/web.php<\/code> &#20013;&#37197;&#32622;&#36335;&#30001;&#65306;<\/p>\n<pre><code class=\"language-php\">use AppHttpControllersPostsController;\n\nRoute::get('\/posts', [PostsController::class, 'index']);\nRoute::post('\/posts\/load-more', [PostsController::class, 'loadMore'])-&gt;name('load_more');<\/code><\/pre>\n<h3>&#24635;&#32467;<\/h3>\n<p>&#36890;&#36807;&#20197;&#19978;&#27493;&#39588;&#65292;&#20320;&#21487;&#20197;&#22312; Laravel &#20013;&#23454;&#29616;&#19968;&#20010;&#22522;&#26412;&#30340; &#8216;&#26080;&#38480;&#28378;&#21160;&#8217; &#20998;&#39029;&#21151;&#33021;&#12290;&#36825;&#20010;&#31034;&#20363;&#23637;&#31034;&#20102;&#22914;&#20309;&#20351;&#29992; Laravel &#30340; Eloquent &#26597;&#35810;&#21644; AJAX &#21152;&#36733;&#26356;&#22810;&#25968;&#25454;&#12290;&#20320;&#21487;&#20197;&#26681;&#25454;&#38656;&#35201;&#36827;&#19968;&#27493;&#20248;&#21270;&#21644;&#25193;&#23637;&#36825;&#20010;&#31034;&#20363;&#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 Eloquent&#20351;&#24471;&#22788;&#29702;&#25968;&#25454;&#24211;&#20132;&#20114;&#21464;&#24471;&#26080;&#32541;&#19988;&#31616;&#21333;&#12290;&#28155;&#21152;&#29616;&#20195;&#29992;&#25143;&#30028;&#38754;&#21151;&#33021;&#22914;&#26080;&#38480;&#28378;&#21160;&#19981;&#20165;&#36890;&#36807;&#25552;&#20379;&#19968;&#31181;&#24179;&#28369;&#21152;&#36733;&#25968;&#25454;&#30340;&#26041;&#24335;&#22686;&#24378;&#20102;&#29992;&#25143;&#20307;&#39564;&#65292;&#32780;&#19988;&#23545;&#20110;&#39640;&#25928;&#22788;&#29702;&#22823;&#25968;&#25454;&#38598;&#20063;&#33267;&#20851;&#37325;&#35201;&#12290;&#22312;&#26412;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#23558;&#35814;&#32454;&#20171;&#32461;&#22914;&#20309;&#20351;&#29992;Laravel&#30340;Eloquent ORM&#21019;&#24314;&#26080;&#38480;&#28378;&#21160;&#20998;&#39029;&#12290;<\/p><h2>&#22312;Laravel&#21644;Eloquent&#20013;&#23454;&#29616;&#26080;&#38480;&#28378;&#21160;&#21151;&#33021;&#12290;<\/h2><p>&#20998;&#39029;&#21152;&#36733;&#26159;&#19968;&#31181;&#32593;&#39029;&#35774;&#35745;&#25216;&#26415;&#65292;&#24403;&#29992;&#25143;&#28378;&#21160;&#39029;&#38754;&#26102;&#65292;&#20250;&#25345;&#32493;&#21152;&#36733;&#26032;&#30340;&#20869;&#23481;&#65292;&#20174;&#32780;&#28040;&#38500;&#20998;&#39029;&#30340;&#38656;&#27714;&#12290;&#20256;&#32479;&#20998;&#39029;&#31995;&#32479;&#23558;&#20869;&#23481;&#20998;&#25104;&#31163;&#25955;&#30340;&#39029;&#38754;&#65292;&#32780;&#26080;&#38480;&#28378;&#21160;&#21017;&#21160;&#24577;&#22320;&#22312;&#29616;&#26377;&#39029;&#38754;&#19978;&#28155;&#21152;&#26032;&#20869;&#23481;&#65292;&#30452;&#21040;&#29992;&#25143;&#21040;&#36798;&#39029;&#38754;&#24213;&#37096;&#12290;<\/p><h3>&#22522;&#26412;&#30340;&#26080;&#38480;&#28378;&#21160;&#19982;Eloquent&#32467;&#21512;&#20351;&#29992;<\/h3><p>&#35753;&#25105;&#20204;&#20174;&#19968;&#20010;&#31616;&#21333;&#30340;&#26080;&#38480;&#28378;&#21160;&#31034;&#20363;&#24320;&#22987;&#12290;&#25105;&#20204;&#20551;&#35774;&#20320;&#24050;&#32463;&#26377;&#19968;&#20010;Laravel&#39033;&#30446;&#35774;&#32622;&#20102;&#19968;&#20010;&#21517;&#20026;&#30340;&#27169;&#22411;&#12290;<code>Post<\/code>&#21644;&#19968;&#20010;&#30456;&#24212;&#30340;&#25968;&#25454;&#24211;&#34920;&#12290;<\/p><pre><code>use AppModelsPost;\n\n\/\/ Controller method\npublic function index()\n{\n    $posts = Post::latest()-&gt;paginate(10);\n    \n    if (request()-&gt;wantsJson()) {\n        return $posts;\n    }\n    \n    return view('posts.index', compact('posts'));\n}\n<\/code><\/pre><p>&#36825;&#27573;&#20195;&#30721;&#20250;&#26816;&#26597;&#35831;&#27714;&#26159;&#21542;&#24819;&#35201;JSON&#21709;&#24212;&#65288;&#21487;&#33021;&#26159;&#26469;&#33258;&#28378;&#21160;&#30340;AJAX&#35831;&#27714;&#65289;&#65292;&#28982;&#21518;&#26681;&#25454;&#38656;&#35201;&#36820;&#22238;&#20998;&#39029;&#24086;&#23376;&#65292;&#21542;&#21017;&#36820;&#22238;&#24086;&#23376;&#25968;&#25454;&#35270;&#22270;&#12290;<\/p><h3>&#35774;&#32622;&#21069;&#31471;&#37096;&#20998;<\/h3><p>&#21069;&#31471;&#26041;&#38754;&#65292;&#20320;&#38656;&#35201;&#20351;&#29992;&#19968;&#20123;JavaScript&#26469;&#26816;&#27979;&#29992;&#25143;&#26159;&#21542;&#28378;&#21160;&#21040;&#24213;&#37096;&#39029;&#38754;&#65292;&#24182;&#28982;&#21518;&#25191;&#34892;&#19968;&#20010;AJAX&#35831;&#27714;&#20197;&#21152;&#36733;&#26356;&#22810;&#20869;&#23481;&#12290;<\/p><pre><code>\/\/ JavaScript (using jQuery for simplicity)\n$(window).scroll(function() {\n    if($(window).scrollTop() + $(window).height() =={()=&gt;' { \n    \n    const page = '{'+ $(taget).attr('+')data('next-page'+')+'';\n    \n    if (page !== null) {\n        loadMoreData(page);\n    }\n}'});\n\nfunction loadMoreData(page){\n  $.ajax(\n        {\n            url: page,\n            type: 'get',\n            beforeSend: function()\n            {\n                $('.ajax-load').show();\n            }\n        })\n        .done(function(data)\n        {\n            if(data.html == \" \"){\n                $('.ajax-load').html(\"No more records found\");\n                return;\n            }\n            $('.ajax-load').hide();\n            $('#post-data').append(data.html);\n        })\n        .fail(function(jqXHR, ajaxOptions, thrownError)\n        {\n              alert('server not responding...');\n        });\n}\n<\/code><\/pre><h3>&#21033;&#29992;&#25042;&#21152;&#36733;&#25552;&#39640;&#24615;&#33021;<\/h3><p>&#20026;&#20102;&#20248;&#21270;&#24615;&#33021;&#65292;&#29305;&#21035;&#26159;&#23545;&#20110;&#21253;&#21547;&#22823;&#37327;&#22270;&#20687;&#30340;&#20869;&#23481;&#65292;&#21487;&#20197;&#32467;&#21512;&#20351;&#29992;&#25042;&#21152;&#36733;&#21644;&#26080;&#38480;&#28378;&#21160;&#25216;&#26415;&#12290;&#36890;&#36807;&#36825;&#31181;&#26041;&#24335;&#65292;&#21482;&#26377;&#21487;&#35265;&#30340;&#20869;&#23481;&#34987;&#21152;&#36733;&#65292;&#32780;&#20854;&#20313;&#20869;&#23481;&#23558;&#22312;&#38656;&#35201;&#26102;&#36827;&#34892;&#24310;&#36831;&#21152;&#36733;&#12290;<\/p><h3>&#39640;&#32423;&#23454;&#26045;<\/h3><p>&#22312;&#26356;&#39640;&#32423;&#30340;&#22330;&#26223;&#19979;&#65292;&#24744;&#21487;&#33021;&#38656;&#35201;&#33258;&#23450;&#20041;&#29992;&#20110;&#20998;&#39029;&#26597;&#35810;&#25110;&#23454;&#29616;&#19968;&#20123;&#39069;&#22806;&#30340;&#21151;&#33021;&#65292;&#27604;&#22914;&#36807;&#28388;&#25110;&#25490;&#24207;&#12290;&#24744;&#21487;&#20197;&#26681;&#25454;&#38656;&#35201;&#35843;&#25972;Eloquent&#26597;&#35810;&#65292;&#24182;&#25353;&#29031;&#31867;&#20284;&#30340;&#27169;&#24335;&#28155;&#21152;&#36825;&#20123;&#22686;&#24378;&#21151;&#33021;&#21040;&#26080;&#38480;&#28378;&#21160;&#21151;&#33021;&#20013;&#12290;<\/p><pre><code>\/\/ Example with customized query and sorting\npublic function index()\n{\n    $posts = Post::when(request()-&gt;has('sort'), function ($query) {\n            return $query-&gt;orderBy('title', request('sort'));\n        })-&gt;paginate(10);\n    \/\/ ... (rest of the controller method)\n}\n<\/code><\/pre><p>&#20320;&#38656;&#35201;&#20026;&#36825;&#20123;&#39069;&#22806;&#30340;&#26597;&#35810;&#21442;&#25968;&#28155;&#21152;&#39069;&#22806;&#30340;JavaScript&#20195;&#30721;&#65292;&#20197;&#20415;&#22312;&#36827;&#34892;&#26032;&#39029;&#38754;&#35831;&#27714;&#26102;&#23558;&#20854;&#21253;&#21547;&#22312;&#20869;&#12290;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>&#32508;&#19978;&#25152;&#36848;&#65292;&#26080;&#38480;&#28378;&#21160;&#26159;&#19968;&#31181;&#29992;&#25143;&#21451;&#22909;&#30340;&#21151;&#33021;&#65292;&#21487;&#20197;&#36890;&#36807;&#20351;&#29992;Eloquent&#22312;Laravel&#24212;&#29992;&#31243;&#24207;&#20013;&#36731;&#26494;&#38598;&#25104;&#65292;&#20197;&#23454;&#29616;&#26080;&#32541;&#30340;&#25968;&#25454;&#26816;&#32034;&#20307;&#39564;&#12290;&#35831;&#35760;&#20303;&#65292;&#22312;&#23454;&#26045;&#27492;&#21151;&#33021;&#26102;&#24212;&#32771;&#34385;SEO&#21644;&#21487;&#35775;&#38382;&#24615;&#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>Laravel&#30340;Eloquent ORM&#65288;&#23545;&#35937;&#20851;&#31995;&#26144;&#23556;&#65289;&#25552;&#20379;&#20102;&#19968;&#20010;&#38750;&#24120;&#28789;&#27963;&#30340;&#26041;&#24335;&#26469;&#22788;&#29702;&#25968;&#25454;&#21644;&#20998;&#39029;&#12290;&#35201;&#23454;&#29616;&ldquo;&#26080;&#38480;&#28378;&#21160;&rdquo;&#30340;&#20998;&#39029;&#25928;&#26524;&#65292;&#20320;&#38656;&#35201;&#20351;&#29992;Eloquent&#27169;&#22411;&#26469;&#23384;&#20648;&#25968;&#25454;&#65292;&#24182;&#20351;&#29992;Paginate&#21253;&#36827;&#34892;&#20998;&#39029;&#12290;<\/p>\n<p>&#39318;&#20808;&#65292;&#30830;&#20445;&#20320;&#24050;&#32463;&#23433;&#35013;&#20102;Eloquent&#21644;Paginate&#21253;&#12290;&#22914;&#26524;&#27809;&#26377;&#65292;&#35831;&#20351;&#29992;&#20197;&#19979;&#21629;&#20196;&#23433;&#35013;&#23427;&#20204;&#65306;<\/p>\n<pre><code class=\"language-bash\">composer require laravel\/pagination<\/code><\/pre>\n<p>&#25509;&#19979;&#26469;&#26159;&#21019;&#24314;&#19968;&#20010;&#22522;&#26412;&#30340;&#27169;&#22411;&#31867;&#65306;<\/p>\n<pre><code class=\"language-php\">use IlluminateDatabaseEloquentModel;\nuse IlluminatePaginationLengthAwarePaginator;\n\nclass MyModel extends Model\n{\n    public function getPosts() {\n        return $this-&gt;hasMany(MyPost::class);\n    }\n}<\/code><\/pre>\n<p>&#28982;&#21518;&#65292;&#20320;&#21487;&#20197;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#25511;&#21046;&#22120;&#26469;&#22788;&#29702;&#20998;&#39029;&#36923;&#36753;&#65306;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace AppHttpControllers;\n\nuse IlluminateHttpRequest;\nuse AppModelsMyModel;\n\nclass PostsController extends Controller\n{\n    public function index(Request $request) {\n        \/\/ &#33719;&#21462;&#35831;&#27714;&#21442;&#25968;\n        $perPage = $request-&gt;input('per_page', 10); \/\/ &#40664;&#35748;&#27599;&#39029;&#26174;&#31034;10&#20010;&#24086;&#23376;\n        $page = $request-&gt;input('page', 1); \/\/ &#24403;&#21069;&#39029;&#38754;\n\n        \/\/ &#21019;&#24314;&#19968;&#20010;&#20998;&#39029;&#22120;&#23454;&#20363;\n        $paginator = new LengthAwarePaginator(\n            array_slice($this-&gt;model-&gt;getPosts()-&gt;orderByDesc('created_at')-&gt;paginate($perPage), ($page - 1) * $perPage, $perPage),\n            $this-&gt;model-&gt;getPosts()-&gt;count(),\n            $perPage,\n            $page,\n            ['path' =&gt; url('\/')]\n        );\n\n        return view('posts.index', compact('paginator'));\n    }\n\n    public function show($id) {\n        \/\/ &#23454;&#29616;&#23637;&#31034;&#21333;&#20010;&#24086;&#23376;&#30340;&#21151;&#33021;\n    }\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#23450;&#20041;&#20102;&#19968;&#20010;&#21517;&#20026;<code>MyModel<\/code>&#30340;&#27169;&#22411;&#31867;&#65292;&#23427;&#26377;&#19968;&#20010;&#26041;&#27861;<code>getPosts()<\/code>&#29992;&#20110;&#33719;&#21462;&#25152;&#26377;&#24086;&#23376;&#12290;&#24403;&#29992;&#25143;&#35775;&#38382; <code>\/posts<\/code> &#36335;&#24452;&#26102;&#65292;&#36825;&#20010;&#25511;&#21046;&#22120;&#20250;&#35745;&#31639;&#20986;&#24403;&#21069;&#39029;&#30721;&#24182;&#35843;&#29992;<code>index<\/code>&#26041;&#27861;&#26469;&#29983;&#25104;&#20998;&#39029;&#12290;<code>show<\/code>&#26041;&#27861;&#23558;&#22312;&#38656;&#35201;&#26102;&#34987;&#35843;&#29992;&#12290;<\/p>\n<p>&#27880;&#24847;&#65292;&#25105;&#20204;&#20351;&#29992;&#20102;<code>LengthAwarePaginator<\/code>&#31867;&#26469;&#33258;&#21160;&#35843;&#25972;&#20998;&#39029;&#22823;&#23567;&#65292;&#36825;&#26679;&#21363;&#20351;&#29992;&#25143;&#28857;&#20987;&#19979;&#19968;&#39029;&#25353;&#38062;&#65292;&#20063;&#19981;&#20250;&#36229;&#20986;&#24635;&#35760;&#24405;&#25968;&#12290;&#27492;&#22806;&#65292;&#25105;&#20204;&#36824;&#28155;&#21152;&#20102;&#19968;&#20010;&#36335;&#24452;&#21464;&#37327;&#21040;&#35270;&#22270;&#65292;&#20197;&#20415;&#20110;&#36335;&#30001;&#36339;&#36716;&#12290;<\/p>\n<p>&#22914;&#26524;&#20320;&#24819;&#35201;&#26356;&#22797;&#26434;&#30340;&#20998;&#39029;&#21151;&#33021;&#65292;&#20363;&#22914;&#26681;&#25454;&#29305;&#23450;&#23383;&#27573;&#25490;&#24207;&#25110;&#32773;&#31579;&#36873;&#25968;&#25454;&#65292;&#21487;&#20197;&#32771;&#34385;&#20351;&#29992;<code>Eloquent<\/code>&#20013;&#30340;<code>withTrashed()<\/code>&#25110;&#20854;&#20182;&#39640;&#32423;&#26597;&#35810;&#25216;&#24039;&#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;&#23454;&#29616; &#8216;&#26080;&#38480;&#28378;&#21160;&#8217; &#20998;&#39029;&#36890;&#24120;&#28041;&#038;#2..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[44],"tuisongtax":[],"class_list":["post-997","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\/997","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=997"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=997"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=997"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=997"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}