1. 程式人生 > >關於TP5的一對一、一對多同時存在的關聯查詢

關於TP5的一對一、一對多同時存在的關聯查詢

clas sql one ID tro test tp5 uid turn

主表SQL(tp_member)

CREATE TABLE `tp_member` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘主鍵id‘,
`username` varchar(50) DEFAULT NULL COMMENT ‘用戶名‘,
`password` varchar(50) DEFAULT NULL COMMENT ‘密碼‘,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

技術分享圖片

tp_basic表SQL

CREATE TABLE `tp_basic` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘主鍵ID‘,
`member_id` mediumint(8) DEFAULT NULL COMMENT ‘uid‘,
`city` varchar(50) DEFAULT NULL COMMENT ‘城市‘,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

技術分享圖片

tp_photo表SQL

CREATE TABLE `tp_photo` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘主鍵ID‘,
`member_id` mediumint(8) DEFAULT NULL,
`url` varchar(80) DEFAULT NULL COMMENT ‘鏈接地址‘,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

技術分享圖片

member 的controller:

<?php
namespace app\admin\controller;
use app\admin\model\Member as MemberModel; use think\Controller; use think\Db; use think\Request; use app\admin\logic\Ceping; /** * 關於TP5的一對一、一對多同時存在的關聯查詢 * Class Member * @package app\admin\controller */ class Member extends Controller { public function index() { $member=new MemberModel();
//查詢一條ID為2的用戶數據;toArray()是將結果轉為數組。 $list=$member->with(‘photo,basic‘)->find(‘2‘)->toArray(); dump($list); } }

member 的MODEL:

<?php
namespace app\admin\model;
use think\Model;

/**
 * 主表(Member)的模型
 * Class Member
 * @package app\admin\model
 */
class Member extends Model
{
    /**
     * 建立和basic的關聯
     * hasOne方法的參數包括:hasOne(‘關聯模型名‘,‘外鍵名‘,‘主鍵名‘,[‘模型別名定義‘],‘join類型‘);
     */
    public function basic()
    {
        return $this->hasOne(‘Basic‘,‘member_id‘);
    }

    /**
     * 建立和photo的關聯
     * hasMany方法的參數包括:hasMany(‘關聯模型名‘,‘外鍵名‘,‘主鍵名‘,[‘模型別名定義‘]);
     */
    public function photo()
    {
        return $this->hasMany(‘Photo‘,‘member_id‘);
    }
}

basic 的MODEL:

<?php

namespace app\admin\model;
use think\Model;

/**
 * basic 表模型
 * @package app\admin\model
 */
class Basic extends Model
{
    /**
     * 建立和member表(主表)的關聯
     * belongsTo的參數包括::belongsTo(‘關聯模型名‘,‘外鍵名‘,‘關聯表主鍵名‘,[‘模型別名定義‘],‘join類型‘);
     */
    public function member()
    {
        return $this->belongsTo(‘Member‘);
    }
}

photo 的MODEL:

<?php

namespace app\admin\model;
use think\Model;

/**
 * photo 表模型
 * @package app\admin\model
 */
class Photo extends Model
{
    /**
     * 建立和member表(主表)的關聯
     * belongsTo的參數包括::belongsTo(‘關聯模型名‘,‘外鍵名‘,‘關聯表主鍵名‘,[‘模型別名定義‘],‘join類型‘);
     */
    public function member()
    {
        return $this->belongsTo(‘Member‘);
    }
}

訪問http://localhost/tp_test/public/index.php/admin/Member/index打印出的數據如下

技術分享圖片

關於TP5的一對一、一對多同時存在的關聯查詢