我正在尝试测试一个控制器功能,该功能将特定数据存储到 mySQL 数据库,即给出特定输入,该输入将使用 API 存储到数据库并通过 Postman 完成。
由于某种原因,我在 Postman 中测试此请求时收到内部 500 服务器错误。我对使用 laravel 和 MySQL 数据库相当陌生。如果我能得到关于我必须解决的问题的任何建议,因为我在成功完成此请求时遇到问题。下面我将展示我的控制器、迁移、路线和模型文件。我在 MAC 上使用 tableplus 和 docker 作为 MySql 数据库。
控制器:
use App\Models\BookRating;
use Illuminate\Http\Request;
class BookRatingController extends Controller
{
/**
* Store a newly created resource in storage.
*/
public function CreateRating( Request $request)
{
// create a function that inserts data to data base ( create a book rating)
$bookrating = new BookRating;
$bookrating->Rating=$request->Rating;
$bookrating->userId=$request->userId;
$bookrating->bookId=$request->bookId;
$bookRating= $bookRating->save();
return ["Data has been saved"];
}
型号:
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class BookRating extends Model
{
use HasFactory;
protected $fillable =
[
'Rating',
'userId',
'bookId'
];
}
迁移:
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up()
{
//
Schema::create('bookRating', function (Blueprint $table) {
$table->id();
$table->string('Rating');
$table->string('userId');
$table->string('bookId');
$table->timestamps();
});
}
路线:
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\BookRatingController;
use App\Http\Models\BookRating;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "api" middleware group. Make something great!
|
*/
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
Route::post("CreateRating",[BookRatingController::class, 'CreateRating']);//adding a bookrating to database API -- POST METHOD--
这是我通过邮递员提交的请求(我在其中输入值),但收到错误 500 :
更改此:
$bookRating= $bookRating->save();
对此:
$bookRating->save();