Laravel 購入処理をpostmanを介してAPIの実装をしたい
解決したいこと
商品管理ツールを作成しているのですが、postmanを介して商品の購入処理を実装させたいです。
productsテーブルにあるstock(在庫数)をsalesテーブルのidに紐づけて処理を実装させようとしています。【購入処理を施したときにstock(在庫数)を1減算し、0になったらエラーとなり購入ができなくなる処理。】
発生している問題・エラー
①stockが0になったらエラーを吐くコードが思いつかない。
②postmanでURLを"localhost/sub/"で処理を行うと"There are no tests for this request"と出てしまう。
該当するソースコード
api.php
Route::get('/sub', [App\Http\Controllers\SalesController::class, 'sub']);
SalesController.php
<?php
namespace App\Http\Controllers\API;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Sales;
class SalesController extends Controller
{
//在庫を減算する
public function sub(Request $request)
{
モデルの減算処理を呼び出す
$sales = new Sales();
$result = $sales->dec();
return $result;
}
}
Sales.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use App\Models\Product;
class Sales extends Model
{
use HasFactory;
protected $table = 'sales';
protected $dates = ['created_at', 'updated_at'];
protected $fillable = ['id', 'product_id'];
public function dec()
{
// 在庫を減らす処理
$sales = DB::table('sales')
->where('product_id')
->join('products', 'sales.product_id', '=', 'products.id')
->decrement('stock', 1);
return $sales;
}
}
postmanのURL
localhost/sub/
Product.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
use App\Models\Company;
use Kyslik\ColumnSortable\Sortable;
class Product extends Model
{
use HasFactory;
protected $table = 'products';
protected $primaryKey = 'id';
protected $fillable = [
'product_name',
'price',
'stock',
'comment',
'img_path',
'company_id',
'created_at',
'updated_at'
];
}