Laravel学习笔记(16)Blog编写功能(数据迁移,模型关系,数据填充)

  1. 追加blogs表

生成migrations文件

// 表名blogs 文件名 create_blogs_table
php artisan make:migration --create=blogs create_blogs_table

追加内容

    public function up()
    {
        Schema::create('blogs', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->timestamps();
            $table->string('content', 200);
            $table->integer('user_id')->index();
        });
    }

执行文件

// 生成新追加的表
artisan migrate
// 或者表全部重新生成
artisan migrate:fresh --seed
  1. 生成Blog模型和资源控制器BlogController和路由
  2. 生成视图文件
	<div class="form-group">
	    <label for="">内容</label>
	    <textarea class="form-control" name="content">{{old('content')}}</textarea>
	</div>
  1. Blog模型中
	// 添加白名单
    protected $fillable = ['content', 'user_id'];

$fillable 只控制批量赋值允许填充的属性白名单,store () 方法没有批量赋值,不受控制。
$fillable 与 $guarded 只限制了 create 方法,而不会限制 save方法。

$fillable 和 $guarded 两个属性是用来控制批量赋值的,批量赋值是什么意思?并不是数据填充,一次填充到数据库 N 条记录的概念,这里(在讲 $fillable 和 $guarded)所谓的批量赋值仅是指在创建记录的时候传入的属性值。所谓的批量是相对于 N 个请求来说的批量。

  1. User模型中追加方法,使之与Blog关联
    public function blogs() {
        return $this->hasMany(Blog::class);
    }

laravel belongsToMany和hasMany用法解析
模型间关系(关联)hasMany,belongsTo 的用法

  1. 控制器中调用
    \Auth::user()->blogs()->create($data);

\Auth::user()返回User模型的实例,再调用其中blogs方法,最后创建数据
因为模型关联,所以会自动将User的id自动赋予Blog的user_id,如果不叫user_id则不会自动关联,需要hasMany指定参数

  1. 生成Blog模型工厂并在tinker下测试
artisan make:factory --model=Blog BlogFactory // 必须要--model,不然找不到模型
$factory->define(Blog::class, function (Faker $faker) {
    return [
        'content' => $faker->text(20),
        'user_id' => $faker->randomElement([1, 2, 3]) // 随机取123中的一个数
    ];
});
factory(App\Blog::class, 20)->make()
  1. 生成填充文件
    public function run()
    {
        factory(\App\Blog::class, 20)->create();
    }

注册文件

public function run()
{
    // $this->call(UsersTableSeeder::class);
    $this->call(UserSeeder::class);
    $this->call(BlogSeeder::class);
}
  1. 执行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值