# 微博模型
和之前創建 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 小結