thinkphp5 模型關聯操作練習一(一對一關聯)
阿新 • • 發佈:2019-02-04
部落格和部落格內容分兩個表,做一對一關係
建資料表
CREATE TABLE `blog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(50) NOT NULL DEFAULT '' COMMENT '部落格標題', `cate_id` int(11) NOT NULL DEFAULT '0' COMMENT '部落格型別ID', `user_id` int(11) NOT NULL DEFAULT '0' COMMENT '釋出人ID', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='部落格表';
CREATE TABLE `content` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`blog_id` int(11) NOT NULL DEFAULT '0' COMMENT '部落格ID',
`data` text NOT NULL COMMENT '內容',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='部落格內容表';
定義模型(注意:關聯的時候Content的模型必須存在)
<?php namespace app\index\model; use think\Model; class Blog extends Model { /** * 獲取部落格的內容 */ public function info() { return $this->hasOne('Content'); } }
新增資料
public function blog_add() { $data = [ 'cate_id' => 1, 'user_id' => 1, 'title' => '加入一篇博文試試', ]; $blog = model('blog')->create($data); if($blog){ $content = [ 'data' => '加入一條博文內容', ]; $result = $blog->info()->save($content); } }
查詢資料
public function blog()
{
$blog = collection(model('blog')->with('info')->select())->toArray();
dump($blog);
}
查詢結果
array(1) {
[0] => array(5) {
["id"] => int(1)
["title"] => string(24) "加入一篇博文試試"
["cate_id"] => int(1)
["user_id"] => int(1)
["info"] => array(3) {
["id"] => int(1)
["blog_id"] => int(1)
["data"] => string(24) "加入一條博文內容"
}
}
}