{"id":817,"date":"2025-06-12T00:22:22","date_gmt":"2025-06-11T16:22:22","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/817.html"},"modified":"2025-06-12T00:22:22","modified_gmt":"2025-06-11T16:22:22","slug":"%e5%9c%a8-laravel-%e4%b8%ad%e4%bd%bf%e7%94%a8%e5%9f%ba%e4%ba%8e%e6%b8%b8%e6%a0%87%e7%9a%84%e5%88%86%e9%a1%b5%e4%b8%8e-eloquent","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/817.html","title":{"rendered":"\u5728 Laravel \u4e2d\u4f7f\u7528\u57fa\u4e8e\u6e38\u6807\u7684\u5206\u9875\u4e0e Eloquent"},"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;&#20351;&#29992;&#22522;&#20110;&#28216;&#26631;&#30340;&#20998;&#39029;&#21644; Eloquent&#65292;&#21487;&#20197;&#26377;&#25928;&#22320;&#22788;&#29702;&#22823;&#25968;&#25454;&#38598;&#65292;&#24182;&#19988;&#21487;&#20197;&#36890;&#36807;&#28216;&#26631;&#26469;&#23454;&#29616;&#20998;&#39029;&#21151;&#33021;&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;&#31034;&#20363;&#27493;&#39588;&#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>laravel-sqlserver<\/code> &#21253;&#65292;&#29992;&#20110;&#36830;&#25509;&#21040; SQL Server &#25968;&#25454;&#24211;&#12290;<\/p>\n<pre><code class=\"language-bash\">composer require laravel-sqlserver\/laravel-sqlserver<\/code><\/pre>\n<h3>2. &#37197;&#32622;&#25968;&#25454;&#24211;&#36830;&#25509;<\/h3>\n<p>&#22312; <code>config\/database.php<\/code> &#25991;&#20214;&#20013;&#37197;&#32622;&#20320;&#30340;&#25968;&#25454;&#24211;&#36830;&#25509;&#65306;<\/p>\n<pre><code class=\"language-php\">'mysql' =&gt; [\n    'driver' =&gt; 'sqlsrv',\n    'host' =&gt; env('DB_HOST', 'localhost'),\n    'port' =&gt; env('DB_PORT', 1433),\n    'database' =&gt; env('DB_DATABASE', 'your_database'),\n    'username' =&gt; env('DB_USERNAME', 'your_username'),\n    'password' =&gt; env('DB_PASSWORD', 'your_password'),\n    'charset' =&gt; 'utf8mb4',\n    'collation' =&gt; 'utf8mb4_unicode_ci',\n],<\/code><\/pre>\n<h3>3. &#21019;&#24314;&#27169;&#22411;<\/h3>\n<p>&#21019;&#24314;&#19968;&#20010;&#27169;&#22411;&#26469;&#26144;&#23556;&#20320;&#30340;&#34920;&#32467;&#26500;&#65306;<\/p>\n<pre><code class=\"language-bash\">php artisan make:model Product<\/code><\/pre>\n<p>&#22312; <code>Product<\/code> &#27169;&#22411;&#20013;&#23450;&#20041;&#20851;&#31995;&#65306;<\/p>\n<pre><code class=\"language-php\">namespace AppModels;\n\nuse IlluminateDatabaseEloquentModel;\nuse IlluminateSupportFacadesDB;\n\nclass Product extends Model\n{\n    protected $table = 'products';\n\n    public function scopeWithCursor($query, $offset, $limit)\n    {\n        return DB::connection()-&gt;cursorPaginator(\n            $this-&gt;select('*'),\n            $limit,\n            ['offset' =&gt; $offset]\n        );\n    }\n}<\/code><\/pre>\n<h3>4. &#20351;&#29992;&#22522;&#20110;&#28216;&#26631;&#30340;&#20998;&#39029;<\/h3>\n<p>&#22312;&#25511;&#21046;&#22120;&#20013;&#20351;&#29992; <code>withCursor<\/code> &#26041;&#27861;&#36827;&#34892;&#22522;&#20110;&#28216;&#26631;&#30340;&#20998;&#39029;&#65306;<\/p>\n<pre><code class=\"language-php\">namespace AppHttpControllers;\n\nuse AppModelsProduct;\nuse IlluminateHttpRequest;\n\nclass ProductController extends Controller\n{\n    public function index(Request $request)\n    {\n        $perPage = 10; \/\/ &#27599;&#39029;&#26174;&#31034;&#30340;&#35760;&#24405;&#25968;\n        $offset = $request-&gt;input('page') * $perPage - $perPage; \/\/ &#35745;&#31639;&#20559;&#31227;&#37327;\n\n        $products = Product::withCursor($offset, $perPage);\n\n        return response()-&gt;json([\n            'data' =&gt; $products-&gt;items(),\n            'total' =&gt; $products-&gt;total(),\n            'current_page' =&gt; $products-&gt;currentPage(),\n            'per_page' =&gt; $products-&gt;perPage(),\n            'last_page' =&gt; $products-&gt;lastPage(),\n        ]);\n    }\n}<\/code><\/pre>\n<h3>5. &#35843;&#29992; API<\/h3>\n<p>&#20320;&#21487;&#20197;&#36890;&#36807;&#20197;&#19979;&#26041;&#24335;&#35843;&#29992;&#36825;&#20010; API &#26469;&#33719;&#21462;&#20998;&#39029;&#25968;&#25454;&#65306;<\/p>\n<pre><code class=\"language-http\">GET \/api\/products?page=1<\/code><\/pre>\n<p>&#36825;&#20010;&#35831;&#27714;&#23558;&#36820;&#22238;&#31532;&#19968;&#39029;&#30340;&#25968;&#25454;&#65292;&#27599;&#39029;&#26174;&#31034;10&#26465;&#35760;&#24405;&#12290;<\/p>\n<h3>&#31034;&#20363;&#20195;&#30721;<\/h3>\n<p>&#20197;&#19979;&#26159;&#19968;&#20010;&#23436;&#25972;&#30340;&#31034;&#20363;&#20195;&#30721;&#65292;&#23637;&#31034;&#20102;&#22914;&#20309;&#22312; Laravel &#20013;&#20351;&#29992;&#22522;&#20110;&#28216;&#26631;&#30340;&#20998;&#39029;&#21644; Eloquent&#65306;<\/p>\n<h4>1. <code>config\/database.php<\/code><\/h4>\n<pre><code class=\"language-php\">'mysql' =&gt; [\n    'driver' =&gt; 'sqlsrv',\n    'host' =&gt; env('DB_HOST', 'localhost'),\n    'port' =&gt; env('DB_PORT', 1433),\n    'database' =&gt; env('DB_DATABASE', 'your_database'),\n    'username' =&gt; env('DB_USERNAME', 'your_username'),\n    'password' =&gt; env('DB_PASSWORD', 'your_password'),\n    'charset' =&gt; 'utf8mb4',\n    'collation' =&gt; 'utf8mb4_unicode_ci',\n],<\/code><\/pre>\n<h4>2. <code>app\/Models\/Product.php<\/code><\/h4>\n<pre><code class=\"language-php\">namespace AppModels;\n\nuse IlluminateDatabaseEloquentModel;\nuse IlluminateSupportFacadesDB;\n\nclass Product extends Model\n{\n    protected $table = 'products';\n\n    public function scopeWithCursor($query, $offset, $limit)\n    {\n        return DB::connection()-&gt;cursorPaginator(\n            $this-&gt;select('*'),\n            $limit,\n            ['offset' =&gt; $offset]\n        );\n    }\n}<\/code><\/pre>\n<h4>3. <code>app\/Http\/Controllers\/ProductController.php<\/code><\/h4>\n<pre><code class=\"language-php\">namespace AppHttpControllers;\n\nuse AppModelsProduct;\nuse IlluminateHttpRequest;\n\nclass ProductController extends Controller\n{\n    public function index(Request $request)\n    {\n        $perPage = 10; \/\/ &#27599;&#39029;&#26174;&#31034;&#30340;&#35760;&#24405;&#25968;\n        $offset = $request-&gt;input('page') * $perPage - $perPage; \/\/ &#35745;&#31639;&#20559;&#31227;&#37327;\n\n        $products = Product::withCursor($offset, $perPage);\n\n        return response()-&gt;json([\n            'data' =&gt; $products-&gt;items(),\n            'total' =&gt; $products-&gt;total(),\n            'current_page' =&gt; $products-&gt;currentPage(),\n            'per_page' =&gt; $products-&gt;perPage(),\n            'last_page' =&gt; $products-&gt;lastPage(),\n        ]);\n    }\n}<\/code><\/pre>\n<p>&#36890;&#36807;&#20197;&#19978;&#27493;&#39588;&#65292;&#20320;&#21487;&#20197;&#22312; Laravel &#20013;&#25104;&#21151;&#20351;&#29992;&#22522;&#20110;&#28216;&#26631;&#30340;&#20998;&#39029;&#21644; Eloquent&#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><p>&#20998;&#39029;&#26159;&#22788;&#29702;&#22823;&#22411;&#25968;&#25454;&#38598;&#24212;&#29992;&#20013;&#30340;&#19968;&#20010;&#20851;&#38190;&#37096;&#20998;&#65292;&#23427;&#36890;&#36807;&#19968;&#27425;&#21152;&#36733;&#23569;&#37327;&#25968;&#25454;&#26469;&#20248;&#21270;&#24212;&#29992;&#31243;&#24207;&#30340;&#24615;&#33021;&#12290;&#20256;&#32479;&#22522;&#20110;&#20559;&#31227;&#37327;&#30340;&#20998;&#39029;&#36890;&#24120;&#34987;&#24191;&#27867;&#20351;&#29992;&#65292;&#20294;&#38543;&#30528;&#25928;&#29575;&#30340;&#25552;&#39640;&#65292;&#28216;&#26631;&#22522;&#20998;&#39029;&#65288;cursor-based pagination&#65289;&#36234;&#26469;&#36234;&#21463;&#21040;&#38738;&#30544;&#65292;&#23588;&#20854;&#26159;&#22312;&#23454;&#26102;&#24212;&#29992;&#20013;&#12290;&#26412;&#25945;&#31243;&#23558;&#25351;&#23548;&#24744;&#22312;Laravel&#20013;&#20351;&#29992;Eloquent&#23454;&#29616;&#28216;&#26631;&#22522;&#20998;&#39029;&#30340;&#22522;&#26412;&#27969;&#31243;&#12290;&#25105;&#20204;&#20174;&#22522;&#30784;&#24320;&#22987;&#65292;&#36880;&#27493;&#28145;&#20837;&#21040;&#26356;&#39640;&#32423;&#30340;&#20027;&#39064;&#65292;&#27839;&#36884;&#25552;&#20379;&#23454;&#29992;&#30340;&#20363;&#23376;&#12290;<\/p><h2>&#29702;&#35299;&#22522;&#20110;&#28216;&#26631;&#30340;&#20998;&#39029;<\/h2><p>&#19982;&#22522;&#20110;&#20559;&#31227;&#37327;&#30340;&#20998;&#39029;&#19981;&#21516;&#65292;cursor-based &#20998;&#39029;&#36890;&#36807;&#36319;&#36394;&#24403;&#21069;&#39029;&#38754;&#26411;&#23614;&#39033;&#30340;&#20301;&#32622;&#26469;&#24037;&#20316;&#65292;&#28982;&#21518;&#26681;&#25454;&#36825;&#20010;&#20301;&#32622;&#26816;&#32034;&#19979;&#19968;&#39029;&#30340;&#25968;&#25454;&#12290;&#36825;&#31181;&#26041;&#27861;&#29305;&#21035;&#36866;&#29992;&#20110;&#25968;&#25454;&#39057;&#32321;&#21464;&#21270;&#30340;&#22823;&#22411;&#25968;&#25454;&#38598;&#65292;&#22240;&#20026;&#23427;&#36991;&#20813;&#20102;&#37325;&#22797;&#21644;&#32570;&#22833;&#39033;&#30446;&#30340;&#38382;&#39064;&#12290;<\/p><h2>&#35774;&#32622;&#20320;&#30340;Laravel&#39033;&#30446;<\/h2><p>&#39318;&#20808;&#65292;&#35831;&#30830;&#20445;&#22312;&#24744;&#30340;&#26426;&#22120;&#19978;&#24050;&#32463;&#23433;&#35013;&#20102;Laravel&#12290;&#24744;&#21487;&#20197;&#25353;&#29031;&#23448;&#26041;&#25991;&#26723;&#36827;&#34892;&#23433;&#35013;&#12290;&#19968;&#26086;Laravel&#35774;&#32622;&#22909;&#65292;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#27169;&#22411;&#21644;&#36801;&#31227;&#25991;&#20214;&#20197;&#22788;&#29702;&#25968;&#25454;&#12290;&#23545;&#20110;&#26412;&#25945;&#31243;&#65292;&#25105;&#20204;&#23558;&#20551;&#35774;&#24744;&#27491;&#22312;&#20351;&#29992;&#21338;&#23458;&#25991;&#31456;&#27169;&#22411;&#12290;<\/p><pre><code>php artisan make:model Post -m\n<\/code><\/pre><p>&#22312;&#32534;&#36753;&#36801;&#31227;&#25991;&#20214;&#20197;&#21253;&#21547;&#25152;&#38656;&#23383;&#27573;&#21518;&#65292;&#36816;&#34892;&#36801;&#31227;&#20197;&#21019;&#24314;&#25968;&#25454;&#24211;&#20013;&#30340;&#34920;&#12290;<\/p><pre><code>php artisan migrate\n<\/code><\/pre><h2>&#22522;&#26412;&#30340;&#20809;&#26631;&#20998;&#39029;<\/h2><p>&#35753;&#25105;&#20204;&#20197;&#19968;&#20010;&#31616;&#21333;&#30340;&#20363;&#23376;&#24320;&#22987;&#65292;&#21363;&#20998;&#39029;&#26597;&#35810;&#12290;&#22312;&#24744;&#30340;Post&#27169;&#22411;&#20013;&#65292;&#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010;&#21517;&#20026;timestamp&#30340;&#23383;&#27573;&#12290;<code>published_at<\/code>&#25105;&#20204;&#21487;&#20197;&#36890;&#36807;&#36825;&#20010;&#23383;&#27573;&#26469;&#19979;&#21333;&#12290;&#26368;&#31616;&#21333;&#30340;&#22522;&#20110;&#20809;&#26631;&#20998;&#39029;&#30340;&#24418;&#24335;&#22914;&#19979;&#25152;&#31034;&#65306;<\/p><pre><code>$posts = Post::orderBy('published_at', 'desc')-&gt;cursorPaginate(10);\nreturn view('posts.index', compact('posts'));\n<\/code><\/pre><p>&#36825;&#23558;&#26816;&#32034;&#25353;&#20854;&#25490;&#24207;&#30340;&#31532;&#19968;&#25209;10&#31687;&#25991;&#31456;&#12290;<code>published_at<\/code>&#26085;&#26399;&#12290;Laravel&#30340;<code>cursorPaginate<\/code>&#26041;&#27861;&#20250;&#33258;&#21160;&#22788;&#29702;&#23450;&#20301;&#38382;&#39064;&#12290;<\/p><h2>&#33258;&#23450;&#20041;&#25351;&#38024;&#23383;&#27573;<\/h2><p>&#22312;&#26576;&#20123;&#24773;&#20917;&#19979;&#65292;&#20320;&#21487;&#33021;&#24076;&#26395;&#26681;&#25454;&#20854;&#20182;&#21015;&#36827;&#34892;&#20998;&#39029;&#12290;<code>id<\/code>&#23545;&#20110;&#27169;&#22411;&#30340;&#20027;&#38190;&#12290;Laravel &#20801;&#35768;&#24744;&#25351;&#23450;&#33258;&#23450;&#20041;&#28216;&#26631;&#21015;&#65306;<\/p><pre><code>$posts = Post::orderBy('title')-&gt;cursorPaginate(10, ['*'], 'cursor', 'title');\n<\/code><\/pre><p>&#36825;&#27573;&#20195;&#30721;&#29255;&#27573;&#25353;&#26631;&#39064;&#23545;&#24086;&#23376;&#36827;&#34892;&#25490;&#24207;&#65292;&#24182;&#20351;&#29992;&#26631;&#39064;&#23383;&#27573;&#20316;&#20026;&#28216;&#26631;&#36827;&#34892;&#20998;&#39029;&#12290;<\/p><h2>&#22788;&#29702;&#28216;&#26631;&#26597;&#35810;<\/h2><p>&#22312;&#23454;&#29616;&#22522;&#20110;&#28216;&#26631;&#30340;&#20998;&#39029;&#26102;&#65292;&#31649;&#29702;Laravel&#20351;&#29992;&#30340;&#26597;&#35810;&#21442;&#25968;&#20197;&#36319;&#36394;&#28216;&#26631;&#20301;&#32622;&#33267;&#20851;&#37325;&#35201;&#12290;&#36825;&#20123;&#21442;&#25968;&#26159;<code>after<\/code>&#21644;&#25105;&#26377;&#20160;&#20040;&#38382;&#39064;&#21527;&#65311;<code>before<\/code>&#36825;&#20123;&#20250;&#34987;&#28155;&#21152;&#21040;URL&#20013;&#65292;&#21487;&#20197;&#36890;&#36807;Laravel&#20013;&#30340;request&#23545;&#35937;&#35775;&#38382;&#21644;&#25805;&#20316;&#23427;&#20204;&#65306;<\/p><pre><code>$currentCursor = $request-&gt;input('cursor');\n$posts = Post::cursorPaginate(10)-&gt;withQueryString();\n<\/code><\/pre><p>&#36825;&#30830;&#20445;&#20102;&#24744;&#30340;&#20998;&#39029;&#38142;&#25509;&#20445;&#25345;&#26597;&#35810;&#23383;&#31526;&#20018;&#20013;&#30340;&#20809;&#26631;&#20301;&#32622;&#65292;&#20174;&#32780;&#22312;&#39029;&#38754;&#23548;&#33322;&#36807;&#31243;&#20013;&#32500;&#25345;&#27491;&#30830;&#30340;&#20998;&#39029;&#29366;&#24577;&#12290;<\/p><h2>&#39640;&#32423;&#20998;&#39029;&#22120;<\/h2><p>&#23545;&#20110;&#38656;&#35201;&#22788;&#29702;&#22797;&#26434;&#25968;&#25454;&#38598;&#24182;&#36827;&#34892;&#39640;&#32423;&#26597;&#35810;&#30340;&#22330;&#26223;&#65292;&#21487;&#33021;&#38656;&#35201;&#36827;&#19968;&#27493;&#23450;&#21046;&#20998;&#39029;&#26597;&#35810;&#12290;&#20363;&#22914;&#65292;&#20320;&#21487;&#20197;&#21482;&#33719;&#21462;&#24403;&#21069;&#29992;&#25143;&#21487;&#35265;&#30340;&#24086;&#23376;&#65306;<\/p><pre><code>$posts = Post::where('visible', true)\n    -&gt;orderBy('published_at', 'desc')\n    -&gt;cursorPaginate(10);\nreturn view('posts.index', compact('posts'));\n<\/code><\/pre><h2>&#32467;&#35770;<\/h2><p>&#22522;&#20110;&#28216;&#26631;&#30340;Laravel&#19982;Eloquent&#30340;&#20998;&#39029;&#25552;&#20379;&#20102;&#22788;&#29702;&#22823;&#37327;&#39057;&#32321;&#21464;&#21270;&#25968;&#25454;&#38598;&#26356;&#39640;&#25928;&#30340;&#26041;&#27861;&#12290;&#23427;&#30830;&#20445;&#29992;&#25143;&#22312;&#27983;&#35272;&#39029;&#38754;&#26102;&#19981;&#20250;&#30475;&#21040;&#37325;&#22797;&#39033;&#25110;&#38169;&#36807;&#26032;&#26465;&#30446;&#12290;&#36890;&#36807;&#36981;&#24490;&#25552;&#20379;&#30340;&#25945;&#31243;&#27493;&#39588;&#21644;&#31034;&#20363;&#65292;&#20320;&#24212;&#35813;&#33021;&#22815;&#25104;&#21151;&#22320;&#22312;&#20320;&#30340;Laravel&#24212;&#29992;&#20013;&#23454;&#29616;&#22522;&#20110;&#28216;&#26631;&#30340;&#20998;&#39029;&#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 &#26159;&#19968;&#20010;&#38750;&#24120;&#27969;&#34892;&#30340; PHP &#26694;&#26550;&#65292;&#23427;&#25552;&#20379;&#20102;&#35768;&#22810;&#21151;&#33021;&#26469;&#31616;&#21270;&#25968;&#25454;&#24211;&#25805;&#20316;&#21644;&#24320;&#21457;&#36807;&#31243;&#12290;&#20851;&#20110;&#20998;&#39029;&#30340;&#23454;&#29616;&#65292;&#20320;&#21487;&#20197;&#21033;&#29992; Laravel &#30340; Eloquent ORM&#65288;Object-Relational Mapping&#65289;&#32467;&#21512;&#22522;&#20110;&#28216;&#26631;&#30340;&#26597;&#35810;&#12290;<\/p>\n<p>&#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010;&#21517;&#20026; <code>User<\/code> &#30340;&#27169;&#22411;&#65292;&#20854;&#20013;&#26377;&#19968;&#20010; <code>id<\/code> &#23383;&#27573;&#29992;&#20110;&#26631;&#35782;&#29992;&#25143;&#65292;&#24182;&#19988;&#25105;&#20204;&#24076;&#26395;&#26681;&#25454;&#29992;&#25143;&#30340; ID &#36827;&#34892;&#20998;&#39029;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#22312; Laravel &#20013;&#21019;&#24314;&#36825;&#20010;&#20998;&#39029;&#26426;&#21046;&#30340;&#26041;&#27861;&#65306;<\/p>\n<ol>\n<li>\n<p>&#39318;&#20808;&#65292;&#30830;&#20445;&#23433;&#35013;&#20102; Laravel 5.7 &#25110;&#26356;&#39640;&#29256;&#26412;&#12290;<\/p>\n<\/li>\n<li>\n<p>&#22312;&#39033;&#30446;&#30446;&#24405;&#19979;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#25991;&#20214;&#22841;&#65292;&#20363;&#22914; <code>pages<\/code>&#65292;&#28982;&#21518;&#23558;&#20197;&#19979;&#20195;&#30721;&#22797;&#21046;&#21040;&#35813;&#25991;&#20214;&#22841;&#20013;&#65306;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace AppHttpControllers;\n\nuse IlluminateHttpRequest;\nuse IlluminateSupportFacadesDB;\nuse AppModelsUser;\n\nclass UserController extends Controller\n{\n    public function index(Request $request)\n    {\n        \/\/ &#35774;&#32622;&#27599;&#39029;&#26174;&#31034;&#30340;&#25968;&#37327;\n        $limit = 10; \/\/ &#21487;&#20197;&#26681;&#25454;&#38656;&#35201;&#35843;&#25972;\n\n        \/\/ &#33719;&#21462;&#24403;&#21069;&#39029;&#30721;\n        $page = $request-&gt;input('page', 1);\n\n        \/\/ &#20351;&#29992; DB::forPage() &#23454;&#29616;&#20998;&#39029;&#26597;&#35810;\n        $users = User::orderBy('created_at', 'desc')-&gt;paginate($limit, ['*'], 'page', $page);\n\n        return response()-&gt;json([\n            'data' =&gt; $users,\n            'total' =&gt; $users-&gt;total(),\n        ]);\n    }\n}<\/code><\/pre>\n<\/li>\n<li>\n<p>&#22312;&#25511;&#21046;&#22120;&#30340; <code>index()<\/code> &#26041;&#27861;&#20013;&#65292;&#39318;&#20808;&#35774;&#32622;&#27599;&#39029;&#26174;&#31034;&#30340;&#25968;&#37327;&#65292;&#28982;&#21518;&#33719;&#21462;&#24403;&#21069;&#39029;&#30721;&#12290;&#26368;&#21518;&#65292;&#35843;&#29992; <code>DB::forPage()<\/code> &#20989;&#25968;&#36827;&#34892;&#20998;&#39029;&#26597;&#35810;&#12290;&#27880;&#24847;&#65292;&#20320;&#38656;&#35201;&#26681;&#25454;&#23454;&#38469;&#24773;&#20917;&#20462;&#25913; <code>$limit<\/code> &#21644; <code>$page<\/code> &#30340;&#20540;&#12290;<\/p>\n<\/li>\n<li>\n<p>&#35843;&#35797;&#24182;&#36816;&#34892;&#24212;&#29992;&#65292;&#29616;&#22312;&#20320;&#24212;&#35813;&#33021;&#30475;&#21040;&#20998;&#39029;&#21518;&#30340;&#29992;&#25143;&#21015;&#34920;&#12290;&#27599;&#20010;&#29992;&#25143;&#20449;&#24687;&#37117;&#20250;&#25353;&#29031;&#25351;&#23450;&#30340;&#39029;&#25968;&#23637;&#31034;&#20986;&#26469;&#12290;<\/p>\n<\/li>\n<\/ol>\n<p>&#20197;&#19978;&#23601;&#26159;&#22914;&#20309;&#22312; Laravel &#20013;&#20351;&#29992;&#22522;&#20110;&#28216;&#26631;&#30340;&#20998;&#39029;&#19982; Eloquent &#23454;&#29616;&#20998;&#39029;&#30340;&#22522;&#26412;&#26041;&#27861;&#12290;&#36890;&#36807;&#36825;&#31181;&#26041;&#24335;&#65292;&#21487;&#20197;&#26377;&#25928;&#22320;&#25511;&#21046;&#25968;&#25454;&#37327;&#21644;&#24615;&#33021;&#38382;&#39064;&#65292;&#25552;&#39640;&#29992;&#25143;&#20307;&#39564;&#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;&#20351;&#29992;&#22522;&#20110;&#28216;&#26631;&#30340;&#20998;&#39029;&#21644; Eloquent&#65292;&#21487;&#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-817","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\/817","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=817"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=817"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=817"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=817"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}