Laravel ,php -artisan 后缀必须加到我的 table 上
Laravel ,php -artisan suffixe had to my table when i seed it
“php artisan db:seed”命令有 2 个小问题。
- 当我执行 运行 命令时,我收到此错误消息:
"SQLSTATE[42S02] Base table or view not found : 1146 La table
"bootstrap_template_commerciauxes" n'existe pas ..."
问题是:我的 table 名字是 commerciaux,而不是 commerciauxes。
我检查了我所有的文件,我的型号是 Commerciaux.php,我的工厂是 CommerciauxFactory。
那么……这是什么魔法呢?我错过了什么?
其次,来自 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 天后就被屏蔽了。
回答您的问题:
由于默认转换,Laravel 默认将 table 名称视为复数,我建议保持这种方式。如果您想定义自己的 table 名称,那么在您的模型 Class 中,您可以为 table 的名称定义以下内容:
受保护 $table = 'commerciaux';
此外,在迁移的 Up 函数中,设置您的 table 名称,如下所示:
public function up()
{
Schema::create('commerciaux', function (Blueprint $table) {
//Your table columns and structure
});
}
关于附加列,这些是 laravel 时间戳,用于跟踪记录创建时的时间戳 (created_at
) 和更新时的时间戳 (updated_at
) 最后一次。在这种情况下,我还建议保留这些字段,因为它们会跟踪记录创建和上次修改时间戳。
如果您不想在 table 中使用这些字段,那么您可以在模型中定义以下代码来排除时间戳:
public $timestamps = false;
除此之外,您还可以从迁移中删除以下行:
table->timestamps();
编辑:在再次 运行 迁移之前,尝试回滚命令,以便创建的基础 table 和迁移记录可以从迁移 table.
中删除
“php artisan db:seed”命令有 2 个小问题。
- 当我执行 运行 命令时,我收到此错误消息:
"SQLSTATE[42S02] Base table or view not found : 1146 La table "bootstrap_template_commerciauxes" n'existe pas ..."
问题是:我的 table 名字是 commerciaux,而不是 commerciauxes。 我检查了我所有的文件,我的型号是 Commerciaux.php,我的工厂是 CommerciauxFactory。 那么……这是什么魔法呢?我错过了什么?
其次,来自 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 天后就被屏蔽了。
回答您的问题:
-
由于默认转换,
Laravel 默认将 table 名称视为复数,我建议保持这种方式。如果您想定义自己的 table 名称,那么在您的模型 Class 中,您可以为 table 的名称定义以下内容:
受保护 $table = 'commerciaux';
此外,在迁移的 Up 函数中,设置您的 table 名称,如下所示:
public function up()
{
Schema::create('commerciaux', function (Blueprint $table) {
//Your table columns and structure
});
}
关于附加列,这些是 laravel 时间戳,用于跟踪记录创建时的时间戳 (
created_at
) 和更新时的时间戳 (updated_at
) 最后一次。在这种情况下,我还建议保留这些字段,因为它们会跟踪记录创建和上次修改时间戳。 如果您不想在 table 中使用这些字段,那么您可以在模型中定义以下代码来排除时间戳:public $timestamps = false;
除此之外,您还可以从迁移中删除以下行:
table->timestamps();
编辑:在再次 运行 迁移之前,尝试回滚命令,以便创建的基础 table 和迁移记录可以从迁移 table.
中删除