1. 程式人生 > >thinkphp5 模型關聯操作練習一(一對一關聯)

thinkphp5 模型關聯操作練習一(一對一關聯)

部落格和部落格內容分兩個表,做一對一關係

建資料表

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) "加入一條博文內容"
    }
  }
}