微博模型

创建数据表迁移文件

首先我们要先为微博创建一个数据表来储存微博数据,一条简单的微博至少需要拥有微博内容(content)和微博发布者(user_id)的信息。接下来让我们创建一个新的迁移文件来创建微博数据表。

$ php artisan make:migration create_statuses_table --create="statuses"

这里我们把微博的表名设为 statuses,意为『动态』。

修改迁移文件

打开新创建的微博迁移文件并加入以下内容。

database/migrations/[timestamp]_create_statuses_table.php

increments('id');
            $table->text('content');
            $table->integer('user_id')->index();
            $table->index(['created_at']);
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('statuses');
    }
}

第一个字段为 text 类型的 content 字段,将用于储存微博的内容。

$table->text('content');

第二个字段为 integer 类型的 user_id 字段,用于储存微博发布者的个人 id,后面我们会借助 user_id 来查找指定用户发布过的所有微博,因此为了提高查询效率,这里我们需要为该字段加上索引。

$table->integer('user_id')->index();

第三个则是为微博的创建时间添加索引,由于 timestamps 方法会为微博数据表生成一个微博创建时间字段 created_at 和一个微博更新时间字段 updated_at,因此在这里我们并不需要再手动创建。为微博的创建时间添加索引的目的是,后面我们会根据微博的创建时间进行倒序输出,并在页面上进行显示,使新建的微博能够排在比较靠前的位置。

$table->index(['created_at']);

执行迁移

在我们定义好迁移文件之后,运行以下命令来执行迁移。

$ php artisan migrate

创建微博模型跟数据库进行交互

所有我们新建的模型文件都要统一放置在 app/Models 文件夹下,为此我们在创建一个新的模型对象时,需要在模型名称前面加上 Models 目录。

$ php artisan make:model Models/Status

用户和微博之间的关联

Eloquent 模型让关联的管理和处理变得更加简单,同时也支持以下几种类型的关联:

  • 一对一
  • 一对多
  • 多对多
  • 远层一对多
  • 多态关联
  • 多态多对多关联

我们可在模型中将 Eloquent 关联定义为函数,如下,我们可在微博模型中,指明一条微博属于一个用户。

app/Models/Status.php

belongsTo(User::class);
    }
}

在用户模型中,指明一个用户拥有多条微博。

app/Models/User.php

hasMany(Status::class);
    }    
}

你可能感兴趣的:(微博模型)