首页 > 解决方案 > Laravel 模型复数表名不起作用

问题描述

PHP版本:5.6.33

Laravel 版本:5.2.45

我正在关注 Laravel 网站https://laravel.com/docs/5.2/quickstart上的“快速入门”教程。

我在“创建任务”部分https://laravel.com/docs/5.2/quickstart#creating-the-task

我的代码看起来就像网站上的代码:

// add new task
Route::post('/task', function(Request $request) {
    $validator = Validator::make($request->all(), [
        'name' => 'required|max:255',
    ]);

    if ($validator->fails()) {
        return redirect('/')
            ->withInput()
            ->withErrors($validator);
    }

    $task = new Task;
    $task->name = $request->name;
    $task->save();

    return redirect('/');
});

模型看起来就像完成的版本一样https://github.com/laravel/quickstart-basic/blob/master/app/Task.php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Task extends Model
{
    //
}

因此,当我尝试添加任务时,出现以下错误:

FatalErrorException in Inflector.php line 265: syntax error, unexpected ':', expecting ';' or '{'

当我将模型更新为以下内容时,它可以工作:

namespace App;

use Illuminate\Database\Eloquent\Model;

class Task extends Model
{
    protected $table = 'tasks';
    //
}

但根据文件,我不应该这样做。

Eloquent 将假定 Flight 模型将记录存储在航班表中。

https://laravel.com/docs/5.6/eloquent#eloquent-model-conventions

为什么我必须在模型中专门命名表才能使其工作?

标签: phplaravel

解决方案


推荐阅读