我创建了如下表格:
public function up(): void
{
Schema::create('image_sliders', function (Blueprint $table) {
$table->id('image_sliders_id');
$table->text('body')->nullable();
$table->string('image');
$table->boolean('status')->default(1);
$table->timestamps();
});
}
现在我想为我的表创建相应的模型类。我感到困惑的是,在某些教程中,它显示使用protected $fillable...
class image_slider extends Model
{
use HasFactory;
protected $fillable = [
'body',
'image'
];
}
在一些教程中它显示使用表名和主键名。
class image_slider extends Model
{
use HasFactory;
protected $table = 'image_sliders';
protected $primarykey = 'image_sliders_id';
}
这两种方法有什么区别?谢谢!
该
$fillable
属性用于mass assignment
laravel 中的保护当您没有按照预期标准命名模型和表时,将使用该
table
属性,例如,如果调用表users
,则模型应该是User
,否则您将需要手动指定它同样,
primaryKey
默认情况下 laravel 也会搜索该id
列因此,在您的情况下,表称为
image_sliders
您的模型应该是ImageSlider
首先,你需要了解 Laravel 的命名规则。
最好的方法是与模型同时创建迁移:
如果您先创建 Eloquent 模型,则表名将自动确定。将 ID 保留为
id
。Laravel 有通用规则,因此您应该遵循这些规则,而不必设计自己的规则。如果您使用$table
或$primarykey
,则违反了 Laravel 的标准规则。约定优于配置也适用于 Laravel。
官方文档里都有写,非官方教程文章不要信,都是不懂 Laravel 的新手写的。