# 微博模型
和之前创建 User 模型的步骤一致,我们需要
1. 创建数据表 Posts
2. 建立微博模型 PostModel
## 创建数据表
打开命令行,键入命令并打开
`php think migrate:create Posts`
`database\migrations\20190728094237_posts.php`
~~~php
<?php
use think\migration\Migrator;
class Posts extends Migrator
{
/**
* Migrate Up.
*/
public function up()
{
// create the table
$table = $this->table('posts');
$table->addColumn('content', 'text')
->addColumn('user_id', 'integer')
->addTimestamps('created_at', 'updated_at')
->create();
}
/**
* Migrate Down.
*/
public function down()
{
$this->dropTable('posts');
}
}
~~~
运行命令 `php think migrate:run`
其中,`user_id` 是为了和 `User` 表中的 `id` 字段关联,当我们创建关系模型时,只用一个 `id` 即可读取该用户发送过的所有推文。
## 创建微博模型
和之前一致,只用在控制台中键入命令
`php think make:model User/Post`
创建完成后并打开文件
`application\user\model\Post.php`
~~~php
<?php
namespace app\User\model;
use think\Model;
class Post extends Model
{
// 定义数据表名
protected $table = 'posts';
// 定义时间戳字段名
protected $createTime = 'created_at';
protected $updateTime = 'updated_at';
}
~~~
这样,基本的模型我们已经定义。
## 模型关联
在用户推文获取的过程中,我们一个用户对应多条推文,如果不通过模型进行关联,在查询时则需要使用用户的 `id` 查询两遍模型,如
~~~php
User::get($user_id)
Post::get($user_id)
~~~
这样的工作非常繁琐并且多次读库增加数据库压力,所以我们需要对模型进行关联定义。
1. 一个用户有多条推文
2. 一条推文只有一个用户
定义正向关联
`application\user\model\User.php`
~~~php
<?php
...
class User extends Model
{
// 正向关联 Post 模型
public function posts()
{
return $this->hasMany('Post', 'user_id');
}
...
~~~
定义反向关联
`application\user\model\Post.php`
~~~php
<?php
...
class Post extends Model
{
反向关联 User 模型
public function user()
{
return $this->belongsTo('User');
}
...
~~~
非常简单的,两个关联操作已经定义,下一节将展示出关联数据。
- 第一章. 基础信息
- 1.1 序言
- 1.2 关于作者
- 1.3 本书源码
- 1.4 反馈纠错
- 1.5 安全指南
- 1.6 捐助作者
- 第二章. 开发环境布置
- 2.1 编辑器选用
- 2.2 命令行工具
- 2.3 开发环境搭建
- 2.4 浏览器选择
- 2.5 第一个应用
- 2.6 Git 工作流
- 第三章. 构建页面
- 3.1 章节说明
- 3.2 静态页面
- 3.3 Think 命令
- 3.4 小结
- 第四章. 优化页面
- 4.1 章节说明
- 4.2 样式美化
- 4.3 局部视图
- 4.4 路由链接
- 4.5 用户注册页面
- 4.6 集中视图
- 4.7 小结
- 第五章. 用户模型
- 5.1 章节说明
- 5.2 数据库迁移
- 5.3 查看数据表
- 5.4 模型文件
- 5.5 小结
- 第六章. 用户注册
- 6.1 章节说明
- 6.2 注册表单
- 6.3 用户数据验证
- 6.4 注册失败错误信息
- 6.5 注册成功
- 6.6 小结
- 第七章. 会话管理
- 7.1 章节说明
- 7.2 会话
- 7.3 用户登录
- 7.4 退出
- 7.5 小结
- 第八章. 用户 CRUD
- 8.1 章节说明
- 8.2 重构代码
- 8.3 更新用户
- 8.4 权限系统
- 8.5 列出所有用户
- 8.6 删除用户
- 8.7 访客模式
- 8.8 优化前端
- 8.9 小结
- 第九章. 微博 CRUD
- 9.1 章节说明
- 9.2 微博模型
- 9.3 显示微博
- 9.4 发布微博
- 9.5 微博数据流
- 9.6 删除微博
- 9.7 小结