{"id":24829,"date":"2024-11-21T14:43:20","date_gmt":"2024-11-21T06:43:20","guid":{"rendered":"https:\/\/fwq.ai\/blog\/24829\/"},"modified":"2024-11-21T14:43:20","modified_gmt":"2024-11-21T06:43:20","slug":"%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8laravel%e5%bc%80%e5%8f%91%e4%b8%80%e4%b8%aa%e5%9c%a8%e7%ba%bf%e6%8b%8d%e5%8d%96%e7%b3%bb%e7%bb%9f","status":"publish","type":"post","link":"https:\/\/fwq.ai\/blog\/24829\/","title":{"rendered":"\u5982\u4f55\u4f7f\u7528Laravel\u5f00\u53d1\u4e00\u4e2a\u5728\u7ebf\u62cd\u5356\u7cfb\u7edf"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/887\/227\/169890429639271.jpg\" class=\"aligncenter\" title=\"\u5982\u4f55\u4f7f\u7528Laravel\u5f00\u53d1\u4e00\u4e2a\u5728\u7ebf\u62cd\u5356\u7cfb\u7edf\u63d2\u56fe\" alt=\"\u5982\u4f55\u4f7f\u7528Laravel\u5f00\u53d1\u4e00\u4e2a\u5728\u7ebf\u62cd\u5356\u7cfb\u7edf\u63d2\u56fe\" \/><\/p>\n<p>\u5728\u5f53\u4eca\u6570\u5b57\u5316\u65f6\u4ee3\uff0c\u62cd\u5356\u884c\u4e1a\u5df2\u7ecf\u9010\u6e10\u5411\u5728\u7ebf\u8f6c\u79fb\u3002\u8fd9\u79cd\u8d8b\u52bf\u53c8\u88ab\u65b0\u51a0\u75ab\u60c5\u63a8\u5411\u4e86\u66f4\u9ad8\u7684\u5c42\u6b21\uff0c\u8bb8\u591a\u4f20\u7edf\u62cd\u5356\u884c\u5f00\u59cb\u5c1d\u8bd5\u5728\u7ebf\u62cd\u5356\u3002\u4e3a\u4e86\u5b9e\u73b0\u8fd9\u4e00\u76ee\u6807\uff0c\u4ed6\u4eec\u9700\u8981\u4e00\u4e2a\u529f\u80fd\u5f3a\u5927\u4e14\u6613\u4e8e\u4f7f\u7528\u7684\u62cd\u5356\u7cfb\u7edf\u3002\u672c\u6587\u5c06\u4ecb\u7ecd\u5982\u4f55\u4f7f\u7528Laravel\u6846\u67b6\u6765\u6784\u5efa\u4e00\u4e2a\u5728\u7ebf\u62cd\u5356\u7cfb\u7edf\u3002<\/p>\n<p>Laravel\u662f\u4e00\u4e2a\u6d41\u884c\u7684PHP\u6846\u67b6\uff0c\u5b83\u63d0\u4f9b\u4e86\u8bb8\u591a\u5b9e\u7528\u7684\u529f\u80fd\uff0c\u5982\u8def\u7531\u3001\u6570\u636e\u5e93\u8fc1\u79fb\u3001queue\u7b49\u3002<\/p>\n<p>1.\u51c6\u5907\u5de5\u4f5c<\/p>\n<p>\u7f16\u5199\u4ee3\u7801\u4e4b\u524d\uff0c\u6211\u4eec\u9700\u8981\u5b89\u88c5Laravel\u7684\u5f00\u53d1\u73af\u5883\u548c\u4e00\u4e9b\u5fc5\u8981\u7684\u4f9d\u8d56\u9879\u3002\u60a8\u53ef\u4ee5\u5728Laravel\u5b98\u7f51\u4e0a\u627e\u5230\u6709\u5173\u6b64\u8fc7\u7a0b\u7684\u8be6\u7ec6\u8bf4\u660e\uff0c\u4e0b\u9762\u662f\u4e00\u4e9b\u7b80\u8981\u7684\u6b65\u9aa4\uff1a<\/p>\n<ul>\n<li>\u5b89\u88c5Laravel<\/li>\n<\/ul>\n<p>\u60a8\u53ef\u4ee5\u4f7f\u7528Composer\u6765\u521b\u5efa\u4e00\u4e2aLaravel\u9879\u76ee\u3002\u53ea\u9700\u5728\u63a7\u5236\u53f0\u4e2d\u8f93\u5165\u4ee5\u4e0b\u547d\u4ee4\u5373\u53ef\uff1a<\/p>\n<pre>composer create-project --prefer-dist laravel\/laravel auction-system<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<ul>\n<li>\u5b89\u88c5\u4f9d\u8d56\u9879<\/li>\n<\/ul>\n<p>\u8fdb\u5165\u9879\u76ee\u76ee\u5f55\uff0c\u7136\u540e\u8f93\u5165\u4ee5\u4e0b\u547d\u4ee4\u6765\u5b89\u88c5\u6240\u6709\u4f9d\u8d56\u9879\uff1a<\/p>\n<pre>composer install<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<ul>\n<li>\u914d\u7f6e\u6570\u636e\u5e93<\/li>\n<\/ul>\n<p>\u5728.env\u6587\u4ef6\u4e2d\u4fee\u6539\u6570\u636e\u5e93\u8fde\u63a5\u4fe1\u606f\uff0c\u5c06APP_KEY\u5b57\u6bb5\u8bbe\u7f6e\u4e3a\u5e94\u7528\u5bc6\u94a5\u3002\u7136\u540e\uff0c\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\u6765\u8fc1\u79fb\u6570\u636e\u5e93\uff1a<\/p>\n<pre>php artisan migrate<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>2.\u5efa\u7acb\u62cd\u5356\u7269\u54c1\u6a21\u578b\u548c\u8fc1\u79fb<\/p>\n<p>\u6a21\u578b\u662fLaravel\u4e2d\u7684\u4e00\u4e2a\u6838\u5fc3\u6982\u5ff5\uff0c\u5b83\u4ee3\u8868\u7740\u4e0e\u5e94\u7528\u7a0b\u5e8f\u4ea4\u4e92\u7684\u6570\u636e\u5e93\u8868\u3002\u6211\u4eec\u9700\u8981\u521b\u5efa\u4e00\u4e2a\u62cd\u5356\u7269\u54c1\u6a21\u578b\u6765\u4ee3\u8868\u6240\u6709\u5728\u7ebf\u62cd\u5356\u7684\u7269\u54c1\u3002\u5728Laravel\u4e2d\uff0c\u6a21\u578b\u4e0e\u8fc1\u79fb\u662f\u4e00\u5bf9\u4e00\u7684\uff0c\u540e\u8005\u7528\u4e8e\u751f\u6210\u6570\u636e\u5e93\u8868\u3002<\/p>\n<p>\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u751f\u6210\u62cd\u5356\u7269\u54c1\u6a21\u578b\u548c\u8fc1\u79fb\uff1a<\/p>\n<pre>php artisan make:model AuctionItem -m<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u8fd9\u4e2a\u547d\u4ee4\u5c06\u4e3a\u6211\u4eec\u751f\u6210\u4e00\u4e2aAuctionItem.php\u6587\u4ef6\u548c\u4e00\u4e2a\u6570\u636e\u5e93\u8fc1\u79fb\u6587\u4ef6\u3002\u8fc1\u79fb\u6587\u4ef6\u5728database\/migrations\u76ee\u5f55\u4e2d\uff0c\u800c\u6a21\u578b\u6587\u4ef6\u5728app\/Models\u76ee\u5f55\u4e2d\u3002<\/p>\n<p>\u6211\u4eec\u9700\u8981\u5728\u8fc1\u79fb\u6587\u4ef6\u4e2d\u5b9a\u4e49\u62cd\u5356\u7269\u54c1\u7684\u6570\u636e\u5e93\u8868\u3002\u6253\u5f00\u751f\u6210\u7684\u8fc1\u79fb\u6587\u4ef6\uff0c\u4fee\u6539up\u65b9\u6cd5\u5982\u4e0b\uff1a<\/p>\n<pre>public function up()\n{\n    Schema::create('auction_items', function (Blueprint $table) {\n        $table-&amp;gt;id();\n        $table-&amp;gt;string('name');\n        $table-&amp;gt;text('description');\n        $table-&amp;gt;integer('starting_price');\n        $table-&amp;gt;integer('current_price');\n        $table-&amp;gt;dateTime('start_time');\n        $table-&amp;gt;dateTime('end_time');\n        $table-&amp;gt;timestamps();\n    });\n}<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u5b9a\u4e49\u4e86\u4e00\u4e2a\u62cd\u5356\u7269\u54c1\u7684\u6a21\u578b\uff0c\u5e76\u6dfb\u52a0\u4e86\u4ee5\u4e0b\u5b57\u6bb5\uff1a<\/p>\n<ul>\n<li>name\uff1a\u62cd\u5356\u7269\u54c1\u7684\u540d\u79f0<\/li>\n<li>description\uff1a\u62cd\u5356\u7269\u54c1\u7684\u63cf\u8ff0<\/li>\n<li>starting_price\uff1a\u62cd\u5356\u7269\u54c1\u8d77\u59cb\u4ef7\u683c<\/li>\n<li>current_price\uff1a\u62cd\u5356\u7269\u54c1\u5f53\u524d\u4ef7\u683c<\/li>\n<li>start_time\uff1a\u62cd\u5356\u5f00\u59cb\u65f6\u95f4<\/li>\n<li>end_time\uff1a\u62cd\u5356\u7ed3\u675f\u65f6\u95f4<\/li>\n<\/ul>\n<p>3.\u6dfb\u52a0\u62cd\u5356\u7269\u54c1\u754c\u9762\u548c\u63a7\u5236\u5668<\/p>\n<p>\u73b0\u5728\u6211\u4eec\u9700\u8981\u4e3a\u6211\u4eec\u7684\u5e94\u7528\u7a0b\u5e8f\u6dfb\u52a0\u4e00\u4e2a\u53ef\u4ee5\u521b\u5efa\u65b0\u62cd\u5356\u7269\u54c1\u7684\u754c\u9762\u3002\u6211\u4eec\u5c06\u4f7f\u7528Laravel\u7684\u89c6\u56fe\u548cBlade\u6a21\u677f\u5f15\u64ce\u6765\u5b9e\u73b0\u6b64\u76ee\u7684\u3002<\/p>\n<p>\u9996\u5148\uff0c\u6211\u4eec\u9700\u8981\u521b\u5efa\u4e00\u4e2a\u63a7\u5236\u5668\u6765\u5904\u7406\u6240\u6709\u62cd\u5356\u7269\u54c1\u76f8\u5173\u7684\u903b\u8f91\u3002\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u521b\u5efa\u63a7\u5236\u5668\uff1a<\/p>\n<pre>php artisan make:controller AuctionItemController --resource<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u8fd9\u6761\u547d\u4ee4\u5c06\u4e3a\u6211\u4eec\u521b\u5efa\u4e00\u4e2a\u540d\u4e3aAuctionItemController.php\u7684\u63a7\u5236\u5668\u6587\u4ef6\uff0c\u5e76\u751f\u6210\u9ed8\u8ba4\u7684index()\u3001create()\u3001store()\u3001show()\u3001edit()\u3001update()\u3001destroy()\u7b49\u65b9\u6cd5\u3002\u8fd9\u91cc\u6211\u4eec\u8981\u4f7f\u7528create()\u65b9\u6cd5\u6765\u5904\u7406\u62cd\u5356\u7269\u54c1\u65b0\u5efa\u9875\u9762\u3002<\/p>\n<p>\u6253\u5f00AuctionItemController.php\u6587\u4ef6\uff0c\u5728create()\u65b9\u6cd5\u4e2d\u6dfb\u52a0\u4ee5\u4e0b\u4ee3\u7801\uff1a<\/p>\n<pre>public function create()\n{\n    return view('auction_item.create');\n}<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u8fd9\u4e2a\u65b9\u6cd5\u5c06\u6e32\u67d3\u4e00\u4e2a\u540d\u4e3aauction_item\/create.blade.php\u7684\u89c6\u56fe\u6a21\u677f\uff0c\u5e76\u8fd4\u56de\u7ed9\u6d4f\u89c8\u5668\u3002<\/p>\n<p>\u73b0\u5728\u6211\u4eec\u9700\u8981\u5728resources\/views\u76ee\u5f55\u4e2d\u521b\u5efa\u4e00\u4e2a\u540d\u4e3aauction_item\u7684\u6587\u4ef6\u5939\uff0c\u5e76\u5728\u5176\u4e2d\u521b\u5efa\u540d\u4e3acreate.blade.php\u7684\u6587\u4ef6\u3002\u6dfb\u52a0\u4ee5\u4e0b\u4ee3\u7801\uff1a<\/p>\n<pre>@extends('layouts.app')\n\n@section('content')\n    &lt;div class=\"container\"&gt;\n        &lt;h1&gt;Create New Auction Item&lt;\/h1&gt;\n\n        &lt;form action=\"%7B%7B%20route('auction-item.store')%20%7D%7D\" method=\"post\"&gt;\n            @csrf\n\n            &lt;div class=\"form-group\"&gt;\n                &lt;label for=\"name\"&gt;Name&lt;\/label&gt;\n                &lt;input type=\"text\" class=\"form-control\" name=\"name\" id=\"name\" required&gt;\n&lt;\/div&gt;\n\n            &lt;div class=\"form-group\"&gt;\n                &lt;label for=\"description\"&gt;Description&lt;\/label&gt;\n                &lt;textarea name=\"description\" id=\"description\" class=\"form-control\" rows=\"5\" required&gt;&lt;\/textarea&gt;\n&lt;\/div&gt;\n\n            &lt;div class=\"form-group\"&gt;\n                &lt;label for=\"starting_price\"&gt;Starting Price&lt;\/label&gt;\n                &lt;input type=\"number\" class=\"form-control\" name=\"starting_price\" id=\"starting_price\" min=\"0\" required&gt;\n&lt;\/div&gt;\n\n            &lt;div class=\"form-group\"&gt;\n                &lt;label for=\"start_time\"&gt;Start Time&lt;\/label&gt;\n                &lt;input type=\"datetime-local\" class=\"form-control\" name=\"start_time\" id=\"start_time\" required&gt;\n&lt;\/div&gt;\n\n            &lt;div class=\"form-group\"&gt;\n                &lt;label for=\"end_time\"&gt;End Time&lt;\/label&gt;\n                &lt;input type=\"datetime-local\" class=\"form-control\" name=\"end_time\" id=\"end_time\" required&gt;\n&lt;\/div&gt;\n\n            &lt;button type=\"submit\" class=\"btn btn-primary\"&gt;Create&lt;\/button&gt;\n        &lt;\/form&gt;\n    &lt;\/div&gt;\n@endsection<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u8fd9\u4e2a\u89c6\u56fe\u6587\u4ef6\u5c06\u5448\u73b0\u4e00\u4e2a\u7528\u6237\u754c\u9762\uff0c\u5176\u4e2d\u5305\u542b\u521b\u5efa\u65b0\u62cd\u5356\u7269\u54c1\u6240\u9700\u7684\u8868\u5355\u3002\u6211\u4eec\u4f7f\u7528\u4e86Laravel\u7684Blade\u6a21\u677f\u5f15\u64ce\u6765\u6e32\u67d3\u8868\u5355\uff0c\u5e76\u4f7f\u7528Laravel\u7684\u8def\u7531\u548c\u63a7\u5236\u5668\u6765\u5904\u7406\u63d0\u4ea4\u6570\u636e\u3002<\/p>\n<p>4.\u6dfb\u52a0\u62cd\u5356\u7269\u54c1\u521b\u5efa\u8def\u7531\u548c\u5904\u7406\u903b\u8f91<\/p>\n<p>\u73b0\u5728\u6211\u4eec\u9700\u8981\u6dfb\u52a0\u4e00\u4e2a\u8def\u7531\u6765\u5904\u7406\u7528\u6237\u63d0\u4ea4\u7684\u8868\u5355\u6570\u636e\u3002\u5728routes\/web.php\u6587\u4ef6\u4e2d\u6dfb\u52a0\u4ee5\u4e0b\u8def\u7531\u4ee3\u7801\uff1a<\/p>\n<pre>Route::get('\/auction-items\/create', [AuctionItemController::class, 'create'])-&amp;gt;name('auction-item.create');\nRoute::post('\/auction-items', [AuctionItemController::class, 'store'])-&amp;gt;name('auction-item.store');<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u8fd9\u4e2a\u8def\u7531\u5c06\u4f7f\u7528AuctionItemController\u63a7\u5236\u5668\u7684store()\u65b9\u6cd5\u6765\u5904\u7406POST\u8bf7\u6c42\u3002<\/p>\n<p>\u6253\u5f00AuctionItemController.php\u6587\u4ef6\uff0c\u5e76\u6dfb\u52a0\u4ee5\u4e0b\u4ee3\u7801\uff1a<\/p>\n<pre>public function store(Request $request)\n{\n    $data = $request-&amp;gt;validate([\n        'name' =&amp;gt; 'required',\n        'description' =&amp;gt; 'required',\n        'starting_price' =&amp;gt; 'required|numeric|min:0',\n        'start_time' =&amp;gt; 'required|date',\n        'end_time' =&amp;gt; 'required|date|after:start_time',\n    ]);\n\n    $auctionItem = new AuctionItem();\n    $auctionItem-&amp;gt;name = $data['name'];\n    $auctionItem-&amp;gt;description = $data['description'];\n    $auctionItem-&amp;gt;starting_price = $data['starting_price'];\n    $auctionItem-&amp;gt;current_price = $data['starting_price'];\n    $auctionItem-&amp;gt;start_time = $data['start_time'];\n    $auctionItem-&amp;gt;end_time = $data['end_time'];\n    $auctionItem-&amp;gt;save();\n\n    return redirect()-&amp;gt;route('auction-item.index');\n}<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u8fd9\u4e2a\u65b9\u6cd5\u5c06\u9a8c\u8bc1\u7528\u6237\u63d0\u4ea4\u7684\u8868\u5355\u6570\u636e\uff0c\u5c06\u5176\u5b58\u50a8\u5230\u6570\u636e\u5e93\u4e2d\uff0c\u5e76\u5c06\u7528\u6237\u91cd\u5b9a\u5411\u5230\u62cd\u5356\u7269\u54c1\u5217\u8868\u9875\u9762\u3002<\/p>\n<p>5.\u5217\u8868\u9875\u548c\u62cd\u5356\u529f\u80fd<\/p>\n<p>\u73b0\u5728\u6211\u4eec\u9700\u8981\u6dfb\u52a0\u4e00\u4e2a\u62cd\u5356\u7269\u54c1\u5217\u8868\u9875\u9762\uff0c\u5e76\u5728\u5176\u4e2d\u5b9e\u73b0\u4e00\u4e9b\u57fa\u672c\u7684\u62cd\u5356\u529f\u80fd\u3002\u6211\u4eec\u5c06\u4f7f\u7528Laravel\u7684blade\u6a21\u677f\u5f15\u64ce\u6765\u751f\u6210HTML\u9875\u9762\uff0c\u5e76\u4f7f\u7528Laravel\u7684\u63a7\u5236\u5668\u6765\u5904\u7406\u62cd\u5356\u76f8\u5173\u7684\u903b\u8f91\u3002<\/p>\n<p>\u5728AuctionItemController.php\u4e2d\u6dfb\u52a0\u4ee5\u4e0b\u4ee3\u7801\uff1a<\/p>\n<pre>public function index()\n{\n    $auctionItems = AuctionItem::all();\n\n    return view('auction_item.index', compact('auctionItems'));\n}\n\npublic function bid(Request $request, AuctionItem $auctionItem)\n{\n    $bidAmount = $request-&amp;gt;input('bid_amount');\n\n    if ($bidAmount current_price) {\n        return redirect()-&amp;gt;back()-&amp;gt;withErrors(['Bid amount should be greater than current price']);\n    }\n\n    $auctionItem-&amp;gt;current_price = $bidAmount;\n    $auctionItem-&amp;gt;save();\n\n    return redirect()-&amp;gt;back()-&amp;gt;with('success', 'Bid successful');\n}<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u8fd9\u4e9b\u65b9\u6cd5\u5c06\u5448\u73b0\u62cd\u5356\u7269\u54c1\u5217\u8868\uff0c\u5904\u7406\u7528\u6237\u7684\u51fa\u4ef7\u8bf7\u6c42\uff0c\u5e76\u5c06\u51fa\u4ef7\u5b58\u50a8\u5230\u6570\u636e\u5e93\u4e2d\u3002<\/p>\n<p>\u5728resources\/views\/auction_item\u6587\u4ef6\u5939\u4e2d\u521b\u5efa\u540d\u4e3aindex.blade.php\u7684\u6587\u4ef6\uff0c\u5e76\u6dfb\u52a0\u4ee5\u4e0b\u4ee3\u7801\uff1a<\/p>\n<pre>@extends('layouts.app')\n\n@section('content')\n    &lt;div class=\"container\"&gt;\n        &lt;h1&gt;Auction Items&lt;\/h1&gt;\n\n        @foreach($auctionItems as $auctionItem)\n            &lt;div class=\"card mb-3\"&gt;\n                &lt;div class=\"card-body\"&gt;\n                    &lt;h5 class=\"card-title\"&gt;{{ $auctionItem-&amp;gt;name }}&lt;\/h5&gt;\n                    &lt;p class=\"card-text\"&gt;{{ $auctionItem-&amp;gt;description }}&lt;\/p&gt;\n                    &lt;p class=\"card-text\"&gt;Starting Price: ${{ $auctionItem-&amp;gt;starting_price }}&lt;\/p&gt;\n                    &lt;p class=\"card-text\"&gt;Current Price: ${{ $auctionItem-&amp;gt;current_price }}&lt;\/p&gt;\n                    &lt;form action=\"%7B%7B%20route('auction-item.bid',%20%24auctionItem)%20%7D%7D\" method=\"post\"&gt;\n                        @csrf\n\n                        &lt;div class=\"form-group\"&gt;\n                            &lt;label for=\"bid_amount\"&gt;Your Bid&lt;\/label&gt;\n                            &lt;input type=\"number\" class=\"form-control\" name=\"bid_amount\" id=\"bid_amount\" min=\"{{ $auctionItem-&amp;gt;current_price }}\" required&gt;\n&lt;\/div&gt;\n\n                        &lt;button type=\"submit\" class=\"btn btn-primary\"&gt;Bid&lt;\/button&gt;\n                    &lt;\/form&gt;\n                &lt;\/div&gt;\n            &lt;\/div&gt;\n        @endforeach\n    &lt;\/div&gt;\n@endsection<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u8fd9\u4e2a\u89c6\u56fe\u6587\u4ef6\u5c06\u663e\u793a\u6240\u6709\u62cd\u5356\u7269\u54c1\uff0c\u5e76\u63d0\u4f9b\u4e00\u4e2a\u8868\u5355\u6765\u5904\u7406\u51fa\u4ef7\u8bf7\u6c42\u3002<\/p>\n<p>6.\u5b8c\u6210<\/p>\n<p>\u73b0\u5728\u6211\u4eec\u5df2\u7ecf\u5efa\u7acb\u4e86\u4e00\u4e2a\u5177\u6709\u57fa\u672c\u529f\u80fd\u7684\u5728\u7ebf\u62cd\u5356\u7cfb\u7edf\u3002\u5f53\u7528\u6237\u8bbf\u95ee\u5e94\u7528\u7a0b\u5e8f\u9996\u9875\u65f6\uff0c\u4ed6\u4eec\u5c06\u770b\u5230\u4e00\u4e2a\u5305\u542b\u6240\u6709\u62cd\u5356\u7269\u54c1\u7684\u5217\u8868\u3002\u7528\u6237\u53ef\u4ee5\u5355\u51fb\u4efb\u610f\u62cd\u5356\u7269\u54c1\uff0c\u7136\u540e\u8fdb\u5165\u62cd\u5356\u8be6\u7ec6\u4fe1\u606f\u9875\u9762\uff0c\u5728\u90a3\u91cc\u4ed6\u4eec\u53ef\u4ee5\u63d0\u4ea4\u51fa\u4ef7\u8bf7\u6c42\u3002\u62cd\u5356\u7684\u5f53\u524d\u4ef7\u503c\u5c06\u5728\u6bcf\u6b21\u51fa\u4ef7\u540e\u81ea\u52a8\u66f4\u65b0\uff0c\u5f53\u62cd\u5356\u7ed3\u675f\u65f6\uff0c\u7cfb\u7edf\u5c06\u81ea\u52a8\u5c06\u7269\u54c1\u5356\u7ed9\u6700\u9ad8\u51fa\u4ef7\u8005\u3002<\/p>\n<p>\u5728\u8fd9\u4e2a\u8fc7\u7a0b\u4e2d\uff0c\u6211\u4eec\u4f7f\u7528\u4e86Laravel\u6846\u67b6\u63d0\u4f9b\u7684\u5404\u79cd\u529f\u80fd\uff0c\u5982\u6a21\u578b\u3001\u8fc1\u79fb\u6587\u4ef6\u3001\u8def\u7531\u3001\u63a7\u5236\u5668\u3001\u89c6\u56fe\u548cBlade\u6a21\u677f\u5f15\u64ce\u3002\u8fd9\u4e9b\u5f3a\u5927\u7684\u5de5\u5177\u4f7f\u6211\u4eec\u80fd\u591f\u8f7b\u677e\u5730\u521b\u5efa\u4e00\u4e2a\u529f\u80fd\u9f50\u5168\u7684\u5728\u7ebf\u62cd\u5356\u7cfb\u7edf\u3002<\/p>\n<p>\u4ee5\u4e0a\u5c31\u662f\u5982\u4f55\u4f7f\u7528Laravel\u5f00\u53d1\u4e00\u4e2a\u5728\u7ebf\u62cd\u5356\u7cfb\u7edf\u7684\u8be6\u7ec6\u5185\u5bb9\uff0c\u66f4\u591a\u8bf7\u5173\u6ce8\u7c73\u4e91\u5176\u5b83\u76f8\u5173\u6587\u7ae0\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5728\u5f53\u4eca\u6570\u5b57\u5316\u65f6\u4ee3\uff0c\u62cd\u5356\u884c\u4e1a\u5df2\u7ecf\u9010\u6e10\u5411\u5728\u7ebf\u8f6c\u79fb\u3002\u8fd9\u79cd\u8d8b\u52bf\u53c8\u88ab\u65b0\u51a0\u75ab\u60c5\u63a8\u5411\u4e86\u66f4\u9ad8\u7684\u5c42\u6b21\uff0c\u8bb8\u591a\u4f20\u7edf\u62cd\u5356\u884c\u5f00\u59cb\u5c1d\u8bd5\u5728\u7ebf\u62cd\u5356\u3002\u4e3a\u4e86\u5b9e\u73b0\u8fd9\u4e00\u76ee\u6807\uff0c\u4ed6\u4eec\u9700\u8981\u4e00\u4e2a\u529f\u80fd\u5f3a\u5927\u4e14\u6613\u4e8e\u4f7f\u7528\u7684\u62cd\u5356\u7cfb\u7edf\u3002\u672c\u6587\u5c06\u4ecb\u7ecd\u5982\u4f55\u4f7f\u7528Laravel\u6846\u67b6\u6765\u6784\u5efa\u4e00\u4e2a\u5728\u7ebf\u62cd\u5356\u7cfb\u7edf\u3002 Laravel\u662f\u4e00\u4e2a\u6d41\u884c\u7684PHP\u6846\u67b6\uff0c\u5b83\u63d0\u4f9b\u4e86\u8bb8\u591a\u5b9e\u7528\u7684\u529f\u80fd\uff0c\u5982\u8def\u7531\u3001\u6570\u636e\u5e93\u8fc1\u79fb\u3001queue\u7b49\u3002 1.\u51c6\u5907\u5de5\u4f5c \u7f16\u5199\u4ee3\u7801\u4e4b\u524d\uff0c\u6211\u4eec\u9700\u8981\u5b89\u88c5Laravel\u7684\u5f00\u53d1\u73af\u5883\u548c\u4e00\u4e9b\u5fc5\u8981\u7684\u4f9d\u8d56\u9879\u3002\u60a8\u53ef\u4ee5\u5728Laravel\u5b98\u7f51\u4e0a\u627e\u5230\u6709\u5173\u6b64\u8fc7\u7a0b\u7684\u8be6\u7ec6\u8bf4\u660e\uff0c\u4e0b\u9762\u662f\u4e00\u4e9b\u7b80\u8981\u7684\u6b65\u9aa4\uff1a \u5b89\u88c5Laravel \u60a8\u53ef\u4ee5\u4f7f\u7528Composer\u6765\u521b\u5efa\u4e00\u4e2aLaravel\u9879\u76ee\u3002\u53ea\u9700\u5728\u63a7\u5236\u53f0\u4e2d\u8f93\u5165\u4ee5\u4e0b\u547d\u4ee4\u5373\u53ef\uff1a composer create-project &#8211;prefer-dist laravel\/laravel auction-system \u767b\u5f55\u540e\u590d\u5236 \u5b89\u88c5\u4f9d\u8d56\u9879 \u8fdb\u5165\u9879\u76ee\u76ee\u5f55\uff0c\u7136\u540e\u8f93\u5165\u4ee5\u4e0b\u547d\u4ee4\u6765\u5b89\u88c5\u6240\u6709\u4f9d\u8d56\u9879\uff1a composer install \u767b\u5f55\u540e\u590d\u5236 \u914d\u7f6e\u6570\u636e\u5e93 \u5728.env\u6587\u4ef6\u4e2d\u4fee\u6539\u6570\u636e\u5e93\u8fde\u63a5\u4fe1\u606f\uff0c\u5c06APP_KEY\u5b57\u6bb5\u8bbe\u7f6e\u4e3a\u5e94\u7528\u5bc6\u94a5\u3002\u7136\u540e\uff0c\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\u6765\u8fc1\u79fb\u6570\u636e\u5e93\uff1a php artisan migrate \u767b\u5f55\u540e\u590d\u5236 2.\u5efa\u7acb\u62cd\u5356\u7269\u54c1\u6a21\u578b\u548c\u8fc1\u79fb \u6a21\u578b\u662fLaravel\u4e2d\u7684\u4e00\u4e2a\u6838\u5fc3\u6982\u5ff5\uff0c\u5b83\u4ee3\u8868\u7740\u4e0e\u5e94\u7528\u7a0b\u5e8f\u4ea4\u4e92\u7684\u6570\u636e\u5e93\u8868\u3002\u6211\u4eec\u9700\u8981\u521b\u5efa\u4e00\u4e2a\u62cd\u5356\u7269\u54c1\u6a21\u578b\u6765\u4ee3\u8868\u6240\u6709\u5728\u7ebf\u62cd\u5356\u7684\u7269\u54c1\u3002\u5728Laravel\u4e2d\uff0c\u6a21\u578b\u4e0e\u8fc1\u79fb\u662f\u4e00\u5bf9\u4e00\u7684\uff0c\u540e\u8005\u7528\u4e8e\u751f\u6210\u6570\u636e\u5e93\u8868\u3002 \u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u751f\u6210\u62cd\u5356\u7269\u54c1\u6a21\u578b\u548c\u8fc1\u79fb\uff1a php artisan make:model AuctionItem -m \u767b\u5f55\u540e\u590d\u5236 \u8fd9\u4e2a\u547d\u4ee4\u5c06\u4e3a\u6211\u4eec\u751f\u6210\u4e00\u4e2aAuctionItem.php\u6587\u4ef6\u548c\u4e00\u4e2a\u6570\u636e\u5e93\u8fc1\u79fb\u6587\u4ef6\u3002\u8fc1\u79fb\u6587\u4ef6\u5728database\/migrations\u76ee\u5f55\u4e2d\uff0c\u800c\u6a21\u578b\u6587\u4ef6\u5728app\/Models\u76ee\u5f55\u4e2d\u3002 \u6211\u4eec\u9700\u8981\u5728\u8fc1\u79fb\u6587\u4ef6\u4e2d\u5b9a\u4e49\u62cd\u5356\u7269\u54c1\u7684\u6570\u636e\u5e93\u8868\u3002\u6253\u5f00\u751f\u6210\u7684\u8fc1\u79fb\u6587\u4ef6\uff0c\u4fee\u6539up\u65b9\u6cd5\u5982\u4e0b\uff1a public function up() { Schema::create(&#8216;auction_items&#8217;, function (Blueprint $table) { $table-&amp;gt;id(); $table-&amp;gt;string(&#8216;name&#8217;); $table-&amp;gt;text(&#8216;description&#8217;); $table-&amp;gt;integer(&#8216;starting_price&#8217;); $table-&amp;gt;integer(&#8216;current_price&#8217;); $table-&amp;gt;dateTime(&#8216;start_time&#8217;); $table-&amp;gt;dateTime(&#8216;end_time&#8217;); $table-&amp;gt;timestamps(); }); } \u767b\u5f55\u540e\u590d\u5236 \u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u5b9a\u4e49\u4e86\u4e00\u4e2a\u62cd\u5356\u7269\u54c1\u7684\u6a21\u578b\uff0c\u5e76\u6dfb\u52a0\u4e86\u4ee5\u4e0b\u5b57\u6bb5\uff1a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[],"class_list":["post-24829","post","type-post","status-publish","format-standard","hentry","category-16"],"_links":{"self":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/24829","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/comments?post=24829"}],"version-history":[{"count":0,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/24829\/revisions"}],"wp:attachment":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/media?parent=24829"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/categories?post=24829"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/tags?post=24829"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}