{"id":864,"date":"2025-06-12T01:28:11","date_gmt":"2025-06-11T17:28:11","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/864.html"},"modified":"2025-06-12T01:28:11","modified_gmt":"2025-06-11T17:28:11","slug":"%e5%a6%82%e4%bd%95%e5%9c%a8laravel%e4%b8%ad%e5%88%9b%e5%bb%ba%e8%b4%ad%e7%89%a9%e8%bd%a6","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/864.html","title":{"rendered":"\u5982\u4f55\u5728Laravel\u4e2d\u521b\u5efa\u8d2d\u7269\u8f66"},"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;&#21019;&#24314;&#36141;&#29289;&#36710;&#36890;&#24120;&#28041;&#21450;&#20197;&#19979;&#20960;&#20010;&#27493;&#39588;&#65306;<\/p>\n<ol>\n<li>\n<p><strong>&#35774;&#32622;&#27169;&#22411;&#21644;&#25511;&#21046;&#22120;<\/strong>&#65306;\n&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#23450;&#20041;&#19968;&#20010;&#27169;&#22411;&#26469;&#34920;&#31034;&#36141;&#29289;&#36710;&#20013;&#30340;&#21830;&#21697;&#65292;&#24182;&#21019;&#24314;&#19968;&#20010;&#25511;&#21046;&#22120;&#26469;&#22788;&#29702;&#19982;&#36141;&#29289;&#36710;&#30456;&#20851;&#30340;&#25805;&#20316;&#12290;<\/p>\n<pre><code class=\"language-bash\">php artisan make:model CartItem<\/code><\/pre>\n<p>&#28982;&#21518;&#22312;<code>CartItem.php<\/code>&#25991;&#20214;&#20013;&#23450;&#20041;&#27169;&#22411;&#30340;&#23646;&#24615;&#21644;&#26041;&#27861;&#65306;<\/p>\n<pre><code class=\"language-php\">namespace AppModels;\n\nuse IlluminateDatabaseEloquentModel;\n\nclass CartItem extends Model\n{\n   protected $fillable = ['product_id', 'quantity'];\n\n   public function product()\n   {\n       return $this-&gt;belongsTo(Product::class);\n   }\n}<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#35774;&#32622;&#36335;&#30001;&#21644;&#35270;&#22270;<\/strong>&#65306;\n&#21019;&#24314;&#19968;&#20010;&#36335;&#30001;&#26469;&#26174;&#31034;&#36141;&#29289;&#36710;&#39029;&#38754;&#65292;&#24182;&#21019;&#24314;&#30456;&#24212;&#30340;&#35270;&#22270;&#26469;&#26174;&#31034;&#36141;&#29289;&#36710;&#20013;&#30340;&#21830;&#21697;&#12290;<\/p>\n<pre><code class=\"language-bash\">php artisan make:controller CartController<\/code><\/pre>\n<p>&#22312;<code>routes\/web.php<\/code>&#25991;&#20214;&#20013;&#28155;&#21152;&#36335;&#30001;&#65306;<\/p>\n<pre><code class=\"language-php\">Route::get('\/cart', 'CartController@index')-&gt;name('cart.index');\nRoute::post('\/cart\/add\/{product}', 'CartController@add')-&gt;name('cart.add');\nRoute::delete('\/cart\/remove\/{item}', 'CartController@remove')-&gt;name('cart.remove');<\/code><\/pre>\n<p>&#22312;<code>resources\/views\/cart\/index.blade.php<\/code>&#25991;&#20214;&#20013;&#21019;&#24314;&#36141;&#29289;&#36710;&#39029;&#38754;&#65306;<\/p>\n<pre><code class=\"language-html\">&lt;div&gt;\n   &lt;h1&gt;Shopping Cart&lt;\/h1&gt;\n   @if (session('cart'))\n       &lt;ul&gt;\n           @foreach (session('cart') as $item)\n               &lt;li&gt;{{ $item['product']-&gt;name }} - {{ $item['quantity'] }} x ${{ $item['product']-&gt;price }}&lt;\/li&gt;\n           @endforeach\n       &lt;\/ul&gt;\n       &lt;a href=\"{{ route('cart.clear') }}\"&gt;Clear Cart&lt;\/a&gt;\n   @else\n       &lt;p&gt;Your cart is empty.&lt;\/p&gt;\n   @endif\n&lt;\/div&gt;<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#23454;&#29616;&#28155;&#21152;&#21644;&#21024;&#38500;&#21830;&#21697;&#30340;&#26041;&#27861;<\/strong>&#65306;\n&#22312;<code>CartController<\/code>&#20013;&#23454;&#29616;&#28155;&#21152;&#21644;&#21024;&#38500;&#21830;&#21697;&#30340;&#26041;&#27861;&#12290;<\/p>\n<pre><code class=\"language-php\">namespace AppHttpControllers;\n\nuse AppModelsCartItem;\nuse IlluminateHttpRequest;\n\nclass CartController extends Controller\n{\n   public function index()\n   {\n       return view('cart.index');\n   }\n\n   public function add(Request $request, Product $product)\n   {\n       $item = CartItem::firstOrCreate(['product_id' =&gt; $product-&gt;id]);\n       $item-&gt;quantity++;\n       session()-&gt;put('cart', CartItem::all());\n       return redirect()-&gt;route('cart.index');\n   }\n\n   public function remove($item)\n   {\n       $item = CartItem::find($item);\n       if ($item) {\n           $item-&gt;quantity--;\n           if ($item-&gt;quantity &lt;= 0) {\n               $item-&gt;delete();\n           } else {\n               session()-&gt;put('cart', CartItem::all());\n           }\n       }\n       return redirect()-&gt;route('cart.index');\n   }\n\n   public function clear()\n   {\n       session()-&gt;forget('cart');\n       return redirect()-&gt;route('cart.index');\n   }\n}<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#22788;&#29702;&#24211;&#23384;&#21644;&#20248;&#24800;&#20195;&#30721;<\/strong>&#65288;&#21487;&#36873;&#65289;&#65306;\n&#22914;&#26524;&#20320;&#38656;&#35201;&#22788;&#29702;&#24211;&#23384;&#21644;&#20248;&#24800;&#20195;&#30721;&#65292;&#21487;&#20197;&#22312;&#25511;&#21046;&#22120;&#20013;&#36827;&#34892;&#30456;&#24212;&#30340;&#36923;&#36753;&#12290;<\/p>\n<\/li>\n<\/ol>\n<p>&#36890;&#36807;&#20197;&#19978;&#27493;&#39588;&#65292;&#20320;&#23601;&#21487;&#20197;&#22312;Laravel&#20013;&#25104;&#21151;&#21019;&#24314;&#19968;&#20010;&#22522;&#26412;&#30340;&#36141;&#29289;&#36710;&#21151;&#33021;&#12290;&#20320;&#21487;&#20197;&#26681;&#25454;&#38656;&#35201;&#36827;&#19968;&#27493;&#25193;&#23637;&#36825;&#20010;&#21151;&#33021;&#65292;&#20363;&#22914;&#28155;&#21152;&#24211;&#23384;&#31649;&#29702;&#12289;&#20248;&#24800;&#20195;&#30721;&#25903;&#25345;&#31561;&#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>&#36141;&#29289;&#36710;&#26159;&#20219;&#20309;&#30005;&#23376;&#21830;&#21153;&#24179;&#21488;&#19981;&#21487;&#25110;&#32570;&#30340;&#19968;&#37096;&#20998;&#12290;Laravel&#65292;&#20316;&#20026;&#26368;&#21463;&#27426;&#36814;&#30340;PHP&#26694;&#26550;&#20043;&#19968;&#65292;&#25552;&#20379;&#20102;&#26500;&#24314;&#23433;&#20840;&#19988;&#21151;&#33021;&#24378;&#22823;&#30340;&#36141;&#29289;&#36710;&#30340;&#24378;&#22823;&#29615;&#22659;&#12290;&#22312;&#26412;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#23558;&#20174;&#22836;&#24320;&#22987;&#36880;&#27493;&#20171;&#32461;&#22914;&#20309;&#20351;&#29992;Laravel&#21019;&#24314;&#19968;&#20010;&#36141;&#29289;&#36710;&#12290;&#25105;&#20204;&#23558;&#28085;&#30422;&#20174;&#35774;&#32622;&#22522;&#30784;&#21040;&#23454;&#29616;&#39640;&#32423;&#21151;&#33021;&#30340;&#25152;&#26377;&#20869;&#23481;&#12290;&#36890;&#36807;&#26412;&#25945;&#31243;&#65292;&#24744;&#23558;&#33719;&#24471;&#19968;&#20010;&#21487;&#20197;&#38598;&#25104;&#21040;&#20219;&#20309;Laravel&#30005;&#21830;&#24212;&#29992;&#20013;&#30340;&#36816;&#34892;&#20013;&#30340;&#36141;&#29289;&#36710;&#12290;<\/p><h2>&#35774;&#32622;&#23436;&#25104;<\/h2><p>&#22312;&#25105;&#20204;&#24320;&#22987;&#32534;&#30721;&#20043;&#21069;&#65292;&#35831;&#30830;&#20445;&#24050;&#32463;&#22312;&#26426;&#22120;&#19978;&#23433;&#35013;&#20102;Laravel&#12290;&#22914;&#26524;&#27809;&#26377;&#65292;&#21487;&#20197;&#21069;&#24448;&#23448;&#26041;Laravel&#25991;&#26723;&#33719;&#21462;&#23433;&#35013;&#35828;&#26126;&#12290;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;Laravel&#39033;&#30446;&#25110;&#23548;&#33322;&#21040;&#29616;&#26377;&#39033;&#30446;&#20197;&#24320;&#22987;&#12290;<\/p><pre><code>laravel new shopping-cart\n<\/code><\/pre><h2>&#25968;&#25454;&#24211;&#37197;&#32622;<\/h2><p>&#35831;&#20808;&#37197;&#32622;&#25968;&#25454;&#24211;&#35774;&#32622;&#12290;<code>.env<\/code>&#35831;&#30830;&#20445;&#24744;&#30340;&#25968;&#25454;&#24211;&#36830;&#25509;&#35814;&#32454;&#20449;&#24687;&#20934;&#30830;&#26080;&#35823;&#12290;<\/p><pre><code>DB_CONNECTION=mysql\nDB_HOST=127.0.0.1\nDB_PORT=3306\nDB_DATABASE=laravel_shopping_cart\nDB_USERNAME=root\nDB_PASSWORD=\n<\/code><\/pre><h2>&#21019;&#24314;&#27169;&#22411;&#21644;&#36801;&#31227;&#12290;<\/h2><p>&#25105;&#20204;&#23558;&#38656;&#35201;&#20004;&#31181;&#20027;&#35201;&#27169;&#22411;&#65306;<code>Product<\/code>&#23545;&#20110;&#21487;&#20197;&#36141;&#20080;&#30340;&#29289;&#21697;&#65292;<code>CartItem<\/code>&#22312;&#36141;&#29289;&#36710;&#20013;&#30340;&#39033;&#30446;&#12290;&#20174;&#21019;&#24314;&#36825;&#20123;&#27169;&#22411;&#21450;&#20854;&#23545;&#24212;&#30340;Eloquent&#36801;&#31227;&#24320;&#22987;&#12290;<\/p><pre><code>php artisan make:model Product -m\nphp artisan make:model CartItem -m\n<\/code><\/pre><p>&#26681;&#25454;&#24744;&#30340;&#24212;&#29992;&#31243;&#24207;&#38656;&#27714;&#65292;&#23450;&#20041;&#36801;&#31227;&#21644;&#27169;&#22411;&#12290;&#20026;&#20102;&#31616;&#21333;&#36215;&#35265;&#65292;&#25105;&#20204;&#23558;&#21482;&#21253;&#25324;&#24517;&#35201;&#30340;&#23383;&#27573;&#12290;<\/p><pre><code>\/\/ database\/migrations\/[timestamp]_create_products_table.php\n...\nSchema::create('products', function (Blueprint $table) {\n    $table-&gt;id();\n    $table-&gt;string('name');\n    $table-&gt;decimal('price', 8, 2);\n    $table-&gt;text('description');\n    $table-&gt;timestamps();\n});\n\n\/\/ database\/migrations\/[timestamp]_create_cart_items_table.php\n...\nSchema::create('cart_items', function (Blueprint $table) {\n    $table-&gt;id();\n    $table-&gt;foreignId('product_id')-&gt;constrained();\n    $table-&gt;integer('quantity');\n    $table-&gt;timestamps();\n});\n<\/code><\/pre><h2>&#26500;&#24314;&#36141;&#29289;&#36710;&#36923;&#36753;<\/h2><p>&#25105;&#20204;&#23558;&#21019;&#24314;&#19968;&#20010;&#31616;&#21333;&#30340;&#36141;&#29289;&#36710;&#31995;&#32479;&#65292;&#35813;&#31995;&#32479;&#20801;&#35768;&#29992;&#25143;&#28155;&#21152;&#39033;&#30446;&#21040;&#36141;&#29289;&#36710;&#12289;&#26356;&#26032;&#39033;&#30446;&#25968;&#37327;&#20197;&#21450;&#20174;&#36141;&#29289;&#36710;&#20013;&#31227;&#38500;&#39033;&#30446;&#12290;&#36141;&#29289;&#36710;&#23558;&#22312;&#20250;&#35805;&#20013;&#23384;&#20648;&#65292;&#20197;&#20445;&#25345;&#20854;&#22312;&#22810;&#20010;&#35831;&#27714;&#20043;&#38388;&#29366;&#24577;&#30340;&#23436;&#25972;&#24615;&#21644;&#23545;&#29992;&#25143;&#30340;&#21807;&#19968;&#24615;&#12290;<\/p><p>&#35753;&#25105;&#20204;&#22312;&#19987;&#38376;&#30340;&#31867;&#20013;&#32534;&#20889;&#25105;&#20204;&#30340;&#36141;&#29289;&#36710;&#36923;&#36753;&#65292;&#21487;&#33021;&#38656;&#35201;&#20351;&#29992; Artisan &#21629;&#20196;&#29983;&#25104;&#23427;&#12290;<\/p><pre><code>php artisan make:controller CartController\n<\/code><\/pre><p>&#23545;&#19981;&#36215;&#65292;&#25105;&#19981;&#33021;&#29702;&#35299;&#36825;&#21477;&#35805;&#12290;&#35831;&#37325;&#26032;&#25551;&#36848;&#24744;&#30340;&#38382;&#39064;&#25110;&#21477;&#23376;&#12290;<code>CartController<\/code>&#28155;&#21152;&#28155;&#21152;&#21040;&#36141;&#29289;&#36710;&#12289;&#26356;&#26032;&#21644;&#21024;&#38500;&#39033;&#30446;&#30340;&#24517;&#35201;&#26041;&#27861;&#12290;<\/p><pre><code>...\npublic function addToCart(Request $request)\n{\n    \/\/ Adding to cart logic\n}\n\npublic function updateCart(Request $request)\n{\n    \/\/ Updating cart logic\n}\n\npublic function removeFromCart(Request $request)\n{\n    \/\/ Removing from cart logic\n}\n&hellip;<\/code><\/pre><p>&#22312;&#36825;&#20123;&#26041;&#27861;&#20013;&#65292;&#24744;&#36890;&#24120;&#20250;&#19982;Laravel&#30340;&#20250;&#35805;&#20132;&#20114;&#26469;&#23384;&#20648;&#21644;&#31649;&#29702;&#36141;&#29289;&#36710;&#30340;&#20869;&#23481;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#21521;&#36141;&#29289;&#36710;&#28155;&#21152;&#39033;&#30446;&#30340;&#19968;&#33324;&#31034;&#20363;&#65306;<\/p><pre><code>...\npublic function addToCart(Request $request)\n{\n    $product = Product::findOrFail($request-&gt;id);\n    $cart = session()-&gt;get('cart', []);\n\n    \/\/ Check if the item is in the cart and increment the quantity\n    if(isset($cart[$request-&gt;id])) {\n        $cart[$request-&gt;id]['quantity']++;\n    } else {\n        \/\/ If not in the cart, add it with quantity as 1\n        $cart[$request-&gt;id] = [\n            \"name\" =&gt; $product-&gt;name,\n            \"quantity\" =&gt; 1,\n            \"price\" =&gt; $product-&gt;price\n        ];\n    }\n    session()-&gt;put('cart', $cart);\n\n    return redirect()-&gt;back()-&gt;with('success', 'Product added to cart successfully!');\n}\n...<\/code><\/pre><h2>&#27491;&#22312;&#26174;&#31034;&#36141;&#29289;&#36710;&#12290;<\/h2><p>&#20026;&#20102;&#29992;&#25143;&#26597;&#30475;&#36141;&#29289;&#36710;&#20013;&#30340;&#39033;&#30446;&#65292;&#25105;&#20204;&#38656;&#35201;&#19968;&#20010;&#36335;&#30001;&#21644;&#30456;&#24212;&#30340;&#35270;&#22270;&#12290;&#39318;&#20808;&#65292;&#22312;&#24212;&#29992;&#20013;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#36335;&#30001;&#12290;<code>web.php<\/code>&#25991;&#20214;&#12290;<\/p><pre><code>Route::get('\/cart', 'CartController@index');<\/code><\/pre><p>&#23545;&#19981;&#36215;&#65292;&#24744;&#30340;&#28040;&#24687;&#19981;&#23436;&#25972;&#65292;&#25105;&#19981;&#28165;&#26970;&#24744;&#24819;&#34920;&#36798;&#20160;&#20040;&#12290;<code>CartController<\/code>&#21019;&#24314;&#19968;&#20010;&#32034;&#24341;&#26041;&#27861;&#65292;&#35813;&#26041;&#27861;&#36820;&#22238;&#35270;&#22270;&#20197;&#21450;&#36141;&#29289;&#36710;&#20013;&#30340;&#39033;&#30446;&#12290;<\/p><pre><code>public function index()\n{\n    $cart = session()-&gt;get('cart');\n\n    return view('cart.index', compact('cart'));\n}<\/code><\/pre><p>&#21019;&#24314;&#35270;&#22270;&#25991;&#20214;&#12290;<code>resources\/views\/cart\/index.blade.php<\/code>&#22312;&#36825;&#37324;&#65292;&#20320;&#38656;&#35201;&#36845;&#20195;&#36807;&#36825;&#20010;&#12290;<code>$cart<\/code>&#26174;&#31034;&#36141;&#29289;&#36710;&#20013;&#30340;&#39033;&#30446;&#12290;<\/p><pre><code>&lt;!-- resources\/views\/cart\/index.blade.php --&gt;\n&lt;ul&gt;\n    @foreach(session('cart') as $id =&gt; $details)&gt;\n        &lt;li&gt;{{ $details['name'] }} - {{ $details['quantity'] }}&lt;\/li&gt;\n    @endforeach\n&lt;\/ul&gt;\n<\/code><\/pre><p>&#36825;&#26159;&#20851;&#20110;&#26174;&#31034;&#36141;&#29289;&#36710;&#30340;&#65292;&#27599;&#27425;&#28155;&#21152;&#21830;&#21697;&#21518;&#65292;&#37117;&#20250;&#22312;&#36825;&#37324;&#26174;&#31034;&#20986;&#26469;&#12290;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>&#22312;&#26412;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#28436;&#31034;&#20102;&#22914;&#20309;&#20351;&#29992;Laravel&#26500;&#24314;&#19968;&#20010;&#31616;&#21333;&#30340;&#20294;&#21151;&#33021;&#23436;&#25972;&#30340;&#36141;&#29289;&#36710;&#12290;&#25509;&#19979;&#26469;&#65292;&#24744;&#21487;&#20197;&#25506;&#32034;&#20854;&#20182;&#29305;&#24615;&#65292;&#22914;&#38598;&#25104;&#25903;&#20184;&#32593;&#20851;&#25110;&#28155;&#21152;&#29992;&#25143;&#35748;&#35777;&#20197;&#20851;&#32852;&#36141;&#29289;&#36710;&#19982;&#29992;&#25143;&#12290;&#26412;&#25991;&#26723;&#27010;&#36848;&#30340;&#25216;&#24039;&#20026;&#20351;&#29992;Laravel&#21019;&#24314;&#24378;&#22823;&#30340;&#30005;&#23376;&#21830;&#21153;&#24179;&#21488;&#22880;&#23450;&#20102;&#22362;&#23454;&#30340;&#22522;&#30784;&#12290;<\/p><p>&#31069;&#20320;&#24555;&#20048;&#32534;&#31243;&#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>&#35201;&#22312; Laravel &#20013;&#21019;&#24314;&#36141;&#29289;&#36710;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992; Eloquent ORM &#21644; Doctrine &#25968;&#25454;&#24211;&#39537;&#21160;&#26469;&#23454;&#29616;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#22312; Laravel &#20013;&#21019;&#24314;&#36141;&#29289;&#36710;&#30340;&#27493;&#39588;&#65306;<\/p>\n<ol>\n<li>\n<p><strong>&#23450;&#20041;&#36141;&#29289;&#36710;&#27169;&#22411;<\/strong>&#65306;\n&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#20026;&#36141;&#29289;&#36710;&#21019;&#24314;&#19968;&#20010;&#27169;&#22411;&#12290;&#36825;&#23558;&#24110;&#21161;&#20320;&#22312;&#25968;&#25454;&#24211;&#20013;&#23384;&#20648;&#21644;&#31649;&#29702;&#36141;&#29289;&#36710;&#20449;&#24687;&#12290;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace AppModels;\n\nuse IlluminateDatabaseEloquentModel;\nuse IlluminateDatabaseEloquentSoftDeletes;\n\nclass ShoppingCart extends Model\n{\n   use SoftDeletes;\n\n   protected $table = 'shopping_cart';\n   protected $dates = ['deleted_at'];\n   public $timestamps = true;\n\n   \/\/ Add other model properties here\n}<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#28155;&#21152;&#36141;&#29289;&#36710;&#34920;&#32467;&#26500;<\/strong>&#65306;\n&#22312;&#25968;&#25454;&#24211;&#20013;&#65292;&#25105;&#20204;&#38656;&#35201;&#20026;&#36141;&#29289;&#36710;&#34920;&#21019;&#24314;&#30456;&#24212;&#30340;&#32467;&#26500;&#12290;&#20363;&#22914;&#65292;&#25105;&#20204;&#21487;&#33021;&#20250;&#26377;&#19968;&#20010;&#21517;&#20026; <code>cart_items<\/code> &#30340;&#34920;&#26469;&#23384;&#20648;&#21830;&#21697;&#19982;&#36141;&#29289;&#36710;&#20043;&#38388;&#30340;&#20851;&#32852;&#20851;&#31995;&#12290;<\/p>\n<pre><code class=\"language-sql\">CREATE TABLE `shopping_cart` (\n `id` int(10) unsigned NOT NULL AUTO_INCREMENT,\n `product_id` int(10) unsigned DEFAULT NULL,\n `quantity` int(11) NOT NULL,\n PRIMARY KEY (`id`),\n KEY `product_id` (`product_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#28155;&#21152;&#36141;&#29289;&#36710;&#21151;&#33021;<\/strong>&#65306;\n&#29616;&#22312;&#25105;&#20204;&#21487;&#20197;&#24320;&#22987;&#32534;&#20889;&#20195;&#30721;&#26469;&#22788;&#29702;&#36141;&#29289;&#36710;&#25805;&#20316;&#12290;&#25105;&#20204;&#23558;&#21019;&#24314;&#19968;&#20010;&#26041;&#27861;&#26469;&#25554;&#20837;&#26032;&#21830;&#21697;&#21040;&#36141;&#29289;&#36710;&#65292;&#21024;&#38500;&#21830;&#21697;&#20174;&#36141;&#29289;&#36710;&#65292;&#25110;&#32773;&#26356;&#26032;&#21830;&#21697;&#30340;&#25968;&#37327;&#12290;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace AppHttpControllers;\n\nuse AppModelsShoppingCart;\nuse AppModelsProduct;\nuse IlluminateHttpRequest;\n\nclass ShoppingCartController extends Controller\n{\n   \/**\n    * Display a listing of the resource.\n    *\n    * @return IlluminateHttpResponse\n    *\/\n   public function index()\n   {\n       $shoppingCart = ShoppingCart::where('user_id', auth()-&gt;user()-&gt;id)-&gt;get();\n       return view('shoppingshopping-cart.index', compact('shoppingCart'));\n   }\n\n   \/**\n    * Store a newly created resource in storage.\n    *\n    * @param  IlluminateHttpRequest  $request\n    * @return IlluminateHttpResponse\n    *\/\n   public function store(Request $request)\n   {\n       $this-&gt;validate($request, [\n           'product_id' =&gt; 'required|exists:products,id',\n           'quantity' =&gt; 'required|integer|min:1'\n       ]);\n\n       $cartItem = new ShoppingCart([\n           'user_id' =&gt; auth()-&gt;user()-&gt;id,\n           'product_id' =&gt; $request['product_id'],\n           'quantity' =&gt; $request['quantity']\n       ]);\n       $cartItem-&gt;save();\n\n       return redirect()-&gt;route('shoppingshopping-cart.index');\n   }\n\n   \/**\n    * Remove the specified resource from storage.\n    *\n    * @param  int  $id\n    * @return IlluminateHttpResponse\n    *\/\n   public function destroy($id)\n   {\n       $cartItem = ShoppingCart::find($id);\n       $cartItem-&gt;delete();\n\n       return redirect()-&gt;route('shoppingshopping-cart.index');\n   }\n}<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#39564;&#35777;&#36755;&#20837;<\/strong>&#65306;\n&#24403;&#29992;&#25143;&#23581;&#35797;&#21521;&#36141;&#29289;&#36710;&#20013;&#28155;&#21152;&#21830;&#21697;&#26102;&#65292;&#38656;&#35201;&#39564;&#35777;&#36755;&#20837;&#26159;&#21542;&#26377;&#25928;&#12290;&#20363;&#22914;&#65292;&#30830;&#20445;&#29992;&#25143;&#36873;&#25321;&#20102;&#26377;&#25928;&#30340;&#21830;&#21697;&#65292;&#24182;&#19988;&#25968;&#37327;&#22823;&#20110;&#38646;&#12290;<\/p>\n<\/li>\n<li>\n<p><strong>&#27979;&#35797;&#36141;&#29289;&#36710;&#21151;&#33021;<\/strong>&#65306;\n&#20026;&#20102;&#30830;&#20445;&#36141;&#29289;&#36710;&#21151;&#33021;&#27491;&#24120;&#24037;&#20316;&#65292;&#35831;&#36816;&#34892;&#20197;&#19979;&#21629;&#20196;&#36827;&#34892;&#27979;&#35797;&#65306;<\/p>\n<pre><code>php artisan db:seed --class=AppSeedsShoppingCartTableSeeder<\/code><\/pre>\n<p>&#36825;&#23558;&#22312;&#25968;&#25454;&#24211;&#20013;&#29983;&#25104;&#19968;&#20123;&#26679;&#20363;&#25968;&#25454;&#65292;&#20379;&#24744;&#27979;&#35797;&#12290;<\/p>\n<\/li>\n<li>\n<p><strong>&#37096;&#32626;&#24212;&#29992;<\/strong>&#65306;\n&#26368;&#21518;&#65292;&#23558;&#27492;&#25511;&#21046;&#22120;&#25991;&#20214;&#65288;&#22914; <code>CartController.php<\/code>&#65289;&#37096;&#32626;&#21040;&#26381;&#21153;&#22120;&#19978;&#65292;&#20197;&#20415;&#29992;&#25143;&#21487;&#20197;&#35775;&#38382;&#36141;&#29289;&#36710;&#39029;&#38754;&#12290;<\/p>\n<\/li>\n<\/ol>\n<p>&#36890;&#36807;&#20197;&#19978;&#27493;&#39588;&#65292;&#20320;&#23601;&#21487;&#20197;&#22312; Laravel &#24212;&#29992;&#20013;&#36731;&#26494;&#22320;&#21019;&#24314;&#24182;&#31649;&#29702;&#36141;&#29289;&#36710;&#20102;&#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;&#21019;&#24314;&#36141;&#29289;&#36710;&#36890;&#24120;&#28041;&#21450;&#20197;&#19979;&#20960;&#20010;&#038;#274..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[44],"tuisongtax":[],"class_list":["post-864","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\/864","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=864"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=864"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=864"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=864"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}