
今日のデジタル時代において、オークション業界は徐々にオンラインに移行しています。この傾向は新型クラウンの流行によってさらに高いレベルに押し上げられ、多くの伝統的なオークションハウスがオンラインオークションに挑戦し始めています。これを達成するには、強力で使いやすいオークション システムが必要でした。この記事では、Laravelフレームワークを使ってネットオークションシステムを構築する方法を紹介します。
Laravel は、ルーティング、データベース移行、キューなど、多くの実用的な機能を提供する人気のある PHP フレームワークです。
1. 準備
コードを記述する前に、Laravel 開発環境と必要な依存関係をインストールする必要があります。このプロセスの詳細な手順については、Laravel の公式 Web サイトで確認できます。簡単な手順をいくつか示します。
Composer を使用して Laravel プロジェクトを作成できます。コンソールで次のコマンドを入力するだけです:
1 | composer create-project --prefer-dist laravel/laravel auction-system
|
ログイン後にコピー
プロジェクト ディレクトリに移動し、次のコマンドを入力してすべての依存関係をインストールします:
##.env ファイル内のデータベース接続情報を変更し、APP_KEY フィールドをアプリケーション キーに設定します。次に、次のコマンドを実行してデータベースを移行します:
2. オークション商品モデルを構築して移行します
モデルは Laravel の中核概念であり、対話するデータベース テーブルを表します。アプリケーション。すべてのオンライン オークション アイテムを表すオークション アイテム モデルを作成する必要があります。 Laravel では、モデルは 1 対 1 で移行され、データベース テーブルの生成に使用されます。
次のコマンドを使用して、オークション アイテム モデルと移行を生成します。
1 | php artisan make:model AuctionItem -m
|
ログイン後にコピー
このコマンドは、AuctionItem.php ファイルとデータベース移行ファイルを生成します。移行ファイルは、database/migrations ディレクトリにあり、モデル ファイルは、app/Models ディレクトリにあります。
移行ファイルでオークションアイテムのデータベーステーブルを定義する必要があります。生成された移行ファイルを開き、up メソッドを次のように変更します。
1 2 3 4 5 6 7 8 9 10 11 12 13 | public function up()
{
Schema::create( 'auction_items' , function (Blueprint $table ) {
$table ->id();
$table ->string( 'name' );
$table ->text( 'description' );
$table ->integer( 'starting_price' );
$table ->integer( 'current_price' );
$table ->dateTime( 'start_time' );
$table ->dateTime( 'end_time' );
$table ->timestamps();
});
}
|
ログイン後にコピー
ここでは、オークション アイテムのモデルを定義し、次のフィールドを追加します。
name: オークション アイテムの名前オークションアイテム名description: オークションアイテムの説明starting_price: オークションアイテムの開始価格current_price: オークションアイテムの現在の価格 start_time: オークション開始時刻 end_time: オークション終了時刻
3. オークション アイテム インターフェイスとコントローラーを追加します
次に、新しいアイテムを作成できる関数を追加する必要があります。オークションアイテムをアプリケーションインターフェイスに追加します。これを実現するために、Laravel のビューと Blade テンプレート エンジンを使用します。
まず、オークション アイテム関連のロジックをすべて処理するコントローラーを作成する必要があります。次のコマンドを使用してコントローラを作成します。
1 | php artisan make:controller AuctionItemController --resource
|
ログイン後にコピー
このコマンドは、AuctionItemController.php という名前のコントローラ ファイルを作成し、デフォルトの Index()、create()、store()、show( )、edit を生成します。 ()、update()、destroy() およびその他のメソッド。ここでは、create() メソッドを使用して新しいオークション商品ページを処理する必要があります。
AuctionItemController.php ファイルを開き、create() メソッドに次のコードを追加します。
1 2 3 4 | public function create()
{
return view( 'auction_item.create' );
}
|
ログイン後にコピー
このメソッドは、auction_item/create.blade.php という名前のビュー テンプレートをレンダリングし、それを返します。ブラウザ。
次に、resources/views ディレクトリに Auction_item という名前のフォルダーを作成し、その中に create.blade.php という名前のファイルを作成する必要があります。次のコードを追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | @ extends ( 'layouts.app' )
@section( 'content' )
<div class = "container" >
<h1>Create New Auction Item</h1>
<form action= "{{ route('auction-item.store') }}" method= "post" >
@csrf
<div class = "form-group" >
<label for = "name" >Name</label>
<input type= "text" class = "form-control" name= "name" id= "name" required>
</div>
<div class = "form-group" >
<label for = "description" >Description</label>
<textarea name= "description" id= "description" class = "form-control" rows= "5" required></textarea>
</div>
<div class = "form-group" >
<label for = "starting_price" >Starting Price</label>
<input type= "number" class = "form-control" name= "starting_price" id= "starting_price" min= "0" required>
</div>
<div class = "form-group" >
<label for = "start_time" >Start Time</label>
<input type= "datetime-local" class = "form-control" name= "start_time" id= "start_time" required>
</div>
<div class = "form-group" >
<label for = "end_time" > End Time</label>
<input type= "datetime-local" class = "form-control" name= "end_time" id= "end_time" required>
</div>
<button type= "submit" class = "btn btn-primary" >Create</button>
</form>
</div>
@endsection
|
ログイン後にコピー
このビュー ファイルは、新しいオークション アイテムの作成に必要なフォームを含むユーザー インターフェイスをレンダリングします。 Laravel の Blade テンプレート エンジンを使用してフォームをレンダリングし、Laravel のルートとコントローラーを使用して送信されたデータを処理しました。
4. オークション アイテム作成ルーティングと処理ロジックを追加する
次に、ユーザーが送信したフォーム データを処理するルートを追加する必要があります。次のルーティング コードを Routes/web.php ファイルに追加します。
1 2 | Route::get( '/auction-items/create' , [AuctionItemController:: class , 'create' ])->name( 'auction-item.create' );
Route::post( '/auction-items' , [AuctionItemController:: class , 'store' ])->name( 'auction-item.store' );
|
ログイン後にコピー
このルートは、AuctionItemController コントローラーの store() メソッドを使用して POST リクエストを処理します。
AuctionItemController.php ファイルを開いて次のコードを追加します:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public function store(Request $request )
{
$data = $request ->validate([
'name' => 'required' ,
'description' => 'required' ,
'starting_price' => 'required|numeric|min:0' ,
'start_time' => 'required|date' ,
'end_time' => 'required|date|after:start_time' ,
]);
$auctionItem = new AuctionItem();
$auctionItem ->name = $data [ 'name' ];
$auctionItem ->description = $data [ 'description' ];
$auctionItem ->starting_price = $data [ 'starting_price' ];
$auctionItem ->current_price = $data [ 'starting_price' ];
$auctionItem ->start_time = $data [ 'start_time' ];
$auctionItem ->end_time = $data [ 'end_time' ];
$auctionItem ->save();
return redirect()->route( 'auction-item.index' );
}
|
ログイン後にコピー
このメソッドは、ユーザーが送信したフォーム データを検証し、データベースに保存し、ユーザーをオークションにリダイレクトします。アイテム一覧ページ。
5. リスト ページとオークション機能
次に、オークション アイテム リスト ページを追加し、そこにいくつかの基本的なオークション機能を実装する必要があります。 Laravel のブレード テンプレート エンジンを使用して HTML ページを生成し、Laravel のコントローラーを使用してオークション関連のロジックを処理します。
次のコードを AuctionItemController.php に追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public function index()
{
$auctionItems = AuctionItem::all();
return view( 'auction_item.index' , compact( 'auctionItems' ));
}
public function bid(Request $request , AuctionItem $auctionItem )
{
$bidAmount = $request ->input( 'bid_amount' );
if ( $bidAmount <= $auctionItem ->current_price) {
return redirect()->back()->withErrors([ 'Bid amount should be greater than current price' ]);
}
$auctionItem ->current_price = $bidAmount ;
$auctionItem ->save();
return redirect()->back()->with( 'success' , 'Bid successful' );
}
|
ログイン後にコピー
これらのメソッドは、オークション アイテム リストをレンダリングし、ユーザーの入札リクエストを処理し、入札をデータベースに保存します。
resources/views/auction_item フォルダーにindex.blade.php という名前のファイルを作成し、次のコードを追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | @ extends ( 'layouts.app' )
@section( 'content' )
<div class = "container" >
<h1>Auction Items</h1>
@ foreach ( $auctionItems as $auctionItem )
<div class = "card mb-3" >
<div class = "card-body" >
<h5 class = "card-title" >{{ $auctionItem ->name }}</h5>
<p class = "card-text" >{{ $auctionItem ->description }}</p>
<p class = "card-text" >Starting Price: ${{ $auctionItem ->starting_price }}</p>
<p class = "card-text" >Current Price: ${{ $auctionItem ->current_price }}</p>
<form action= "{{ route('auction-item.bid', $auctionItem) }}" method= "post" >
@csrf
<div class = "form-group" >
<label for = "bid_amount" >Your Bid</label>
<input type= "number" class = "form-control" name= "bid_amount" id= "bid_amount" min= "{{ $auctionItem->current_price }}" required>
</div>
<button type= "submit" class = "btn btn-primary" >Bid</button>
</form>
</div>
</div>
@ endforeach
</div>
@endsection
|
ログイン後にコピー
このビュー ファイルには、すべてのオークション アイテムが表示され、処理するフォームが提供されます。入札リクエスト。
6.完了
これで、基本的な機能を備えたネットオークションシステムが構築できました。ユーザーがアプリのホームページにアクセスすると、すべてのオークションアイテムのリストが表示されます。ユーザーはオークション項目をクリックするとオークションの詳細ページに移動し、そこで入札リクエストを送信できます。オークションの現在価値は各入札後に自動的に更新され、オークションが終了するとシステムが自動的に最高入札者にアイテムを販売します。
このプロセスでは、モデル、移行ファイル、ルーティング、コントローラー、ビュー、Blade テンプレート エンジンなど、Laravel フレームワークによって提供されるさまざまな機能を使用しました。これらの強力なツールを使用すると、完全に機能するオンライン オークション システムを簡単に作成できます。
以上がLaravelを使ったネットオークションシステムの開発方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。