Laravel 10 使用控制器将数据存储到 MySQL 数据库

问题描述 投票:0回答:1

我正在尝试测试一个控制器功能,该功能将特定数据存储到 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 :

mysql laravel http post postman
1个回答
0
投票

更改此:

$bookRating= $bookRating->save();

对此:

$bookRating->save();
© www.soinside.com 2019 - 2024. All rights reserved.