Laravel模型如何定义数据库字段及类型?参考Django实现方式
在Laravel中声明数据库字段及数据类型的方式
Laravel和Django这类框架的实现逻辑不同,它不会直接在模型类里定义字段类型,而是通过数据库迁移文件来创建/修改表结构,模型类主要负责和数据表的关联、数据填充规则及类型转换等操作。
1. 用迁移文件定义字段(核心方式)
迁移是Laravel管理数据库结构的官方标准方式,步骤如下:
- 生成迁移文件:
php artisan make:migration create_models_table
- 打开生成的
database/migrations/xxxx_xx_xx_xxxxxx_create_models_table.php文件,在up()方法里声明字段及对应类型:
public function up() { Schema::create('models', function (Blueprint $table) { $table->id(); // 自增主键 $table->string('name'); // 字符串类型字段 $table->string('address'); // 字符串类型字段 $table->timestamps(); // 自动维护的创建、更新时间字段 }); }
- 执行迁移,创建数据表:
php artisan migrate
2. 在模型类中做关联与配置
模型类无需定义字段类型,但需配置和数据表的关联规则、批量赋值权限及可选的类型转换:
创建对应模型(或用php artisan make:model MyModel生成):
namespace App\Models; use Illuminate\Database\Eloquent\Model; class MyModel extends Model { // 手动指定关联的数据表(默认规则:模型类名复数形式为表名,如MyModel对应my_models) protected $table = 'models'; // 指定允许批量赋值的字段 protected $fillable = ['name', 'address']; // 可选:字段类型转换,比如将数据库存储的字符串转为特定类型 protected $casts = [ // 示例:'is_valid' => 'boolean' ]; }
内容的提问来源于stack exchange,提问作者orphius
相关产品推荐
相关产品推荐

