Laravel ,php -artisan 后缀必须加到我的 table 上

Laravel ,php -artisan suffixe had to my table when i seed it

“php artisan db:seed”命令有 2 个小问题。

  1. 当我执行 运行 命令时,我收到此错误消息:

"SQLSTATE[42S02] Base table or view not found : 1146 La table "bootstrap_template_commerciauxes" n'existe pas ..."

问题是:我的 table 名字是 commerciaux,而不是 commerciauxes。 我检查了我所有的文件,我的型号是 Commerciaux.php,我的工厂是 CommerciauxFactory。 那么……这是什么魔法呢?我错过了什么?

  1. 其次,来自 db:seed 的 SQL 请求添加了一些我不想添加的列:

    SQLSTATE[42S02]: Base table or view not found: 1146 La table 'bootstrap_template.commerciauxes' n'existe pas (SQL: insert进入 commerciauxes (nom, prenom, ville, updated_at, created_at) values (Dr. Luis Champlin PhD, Dr. Luella Leuschke, Leathaberg, 2022-06-03 21:42:44, 2022-06-03 21:42:44))

这是我的 Commerciaux 模型:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Commerciaux extends Model
{
    use HasFactory;

    protected $fillable = [
        'nom',
        'prenom',
        'ville',
        'nbre_commande',
        
    ];
}

我的 CommerciauxFactory(以防万一)

<?php

namespace Database\Factories;

use Illuminate\Database\Eloquent\Factories\Factory;

class CommerciauxFactory extends Factory
{
    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        return [
            'nom' => $this->faker->name(),
            'prenom' => $this->faker->name(),
            'ville' => $this->faker->city(),
        ];
    }
}

非常感谢您抽出宝贵的时间,我想尝试一下这个不错的工具,但由于这些错误,我在 2 天后就被屏蔽了。

回答您的问题:

    由于默认转换,
  1. Laravel 默认将 table 名称视为复数,我建议保持这种方式。如果您想定义自己的 table 名称,那么在您的模型 Class 中,您可以为 table 的名称定义以下内容:

    受保护 $table = 'commerciaux';

此外,在迁移的 Up 函数中,设置您的 table 名称,如下所示:

public function up()
    {
        Schema::create('commerciaux', function (Blueprint $table) {
           //Your table columns and structure
        });
    }
  1. 关于附加列,这些是 laravel 时间戳,用于跟踪记录创建时的时间戳 (created_at) 和更新时的时间戳 (updated_at) 最后一次。在这种情况下,我还建议保留这些字段,因为它们会跟踪记录创建和上次修改时间戳。 如果您不想在 table 中使用这些字段,那么您可以在模型中定义以下代码来排除时间戳:

    public $timestamps = false;

除此之外,您还可以从迁移中删除以下行:

table->timestamps();

编辑:在再次 运行 迁移之前,尝试回滚命令,以便创建的基础 table 和迁移记录可以从迁移 table.

中删除