原理:https://www.kancloud.cn/laowu199/e_dev/448632

示例数据库

hasOne:有一个,加上主谓语应该是 ,A 有一个 B
hasMany:有很多,A 有很多 B

<?php
namespace app\common\model;
use think\facade\Log;
use think\Model;
class CategoryModel extends App
{
protected $table ='category';
protected $pk = 'id'; public function product(){
return $this->hasMany("app\common\model\ProductModel",'category_id','id')->order('id');
//注意第二个参数为外键,第三个参数为CategoryModel里面对应外键的域
}

调用

$categorys =  CategoryModel::with(['product'=>function($query){$query->field('id,name,product_code,price1,price2,category_id');}])->all();

参考

$list = User::field('id,name')->with(['profile'=>function($query){$query->field('email,phone');}])->select([1,2,3]);
//如果使用field方法指定查询字段,闭包函数内查询字段必须包含当前关联模型的主键,否则会导致关联查询失败
foreach($list as $user){
// 获取用户关联的profile模型数据
dump($user->profile);
}

belongsTo:属于, A 属于 B

数据表

model

<?php

namespace app\common\model;

use think\Model;

class ProductModel extends Model
{
protected $table = 'product';
protected $pk = 'id'; public function category(){
return $this->belongsTo('app\common\model\CategoryModel','category_id','id');
}
public function getProductByCategory($categoryId = 0){
return $this->where('id',$categoryId)->select();
} }

调用

$productModel = new ProductModel();
$product = $productModel::find(5); //注意关联查询只能单条数据查询
$category= $product->category; dump($product);

belongsto输出

hasMany调用

 $categoryDao = new CategoryModel();
$category = $categoryDao::get(1);
$product = $category->product;

thinkphp 关联的更多相关文章

  1. ThinkPHP 关联模型(二十)

    原文:ThinkPHP 关联模型(二十) ThinkPHP关联模型 两表关联查询:Message 和  user  关联条件uid(参考手册:模型->关联模型) 步骤: 一:创建Message表 ...

  2. ThinkPHP关联模型详解

    在ThinkPHP中,关联模型更类似一种mysql中的外键约束,但是外键约束更加安全,缺点却是在写sql语句的时候不方便,ThinkPHP很好得解决了这个问题.但是很多人不动关联模型的意思.现在就写个 ...

  3. ThinkPHP关联模型如何关联非主键

    ThinkPHP关联模型默认是主键外键关联 官方并没有提供相关文档 如何实现非主键与非主键间之间的关联 <?php namespace Admin\Model; use Think\Model\ ...

  4. ThinkPHP - 关联模型 - 一对多

    使用之前,先引入文件夹,否则相应的功能不能实现. 如果对thinkPHP不精通,使用或开发的时候,最好直接使用完成版本的ThinkPHP. 关系模型定义: <?php /** * 继承自 Rel ...

  5. thinkphp关联模型的用法

    HAS_ONE(值得注意的是,这是主动关联,外键必须是被关联的表): <?php namespace Home\Model; use Think\Model\RelationModel; cla ...

  6. thinkphp关联模型的注意大小写

    TP框架报错: think\Model:relation方法不存在 首先检查大小写,尤其是模型名称首字母大写 /**** 模型名字QqModel.class.php ***************** ...

  7. thinkphp 关联模型配置代码

    <?php /** * 公司与部门关联模型 */ class CompanyRelationModel extends RelationModel{ //主表名称 protected $tabl ...

  8. ThinkPHP 关联模型中查询某条记录的父级(非查询子级)

    数据表 id      cat_name      cat_pid 76     手机.数码     0 84     手机配件        76 86     蓝牙耳机        84 从属关 ...

  9. ThinkPHP - 关联模型 - 多对多

    表结构: 映射关系: UserRelationModel会取UserRelation为表名称.所以要自定义表名称: //定义主表名称protected $tableName = 'User'; < ...

  10. Thinkphp 关联模型和试图模型区别

    关联模型主要在多表操作时使用,比如 user表,user_role表,role表 user_role字段:uid,rid,它作为中间表,负责将user和role之间的,1对1,1对多,多对多的关系进行 ...

随机推荐

  1. Activity和Fragment生命周期对比

    版权声明:本文为博主原创文章,未经博主允许不得转载.

  2. 关于scroll,client,innear,avail,offset等的理解

    在写实例理解scrollWidth,clientWidth,innearWidth,availWidth及offsetWidth等的时候,意外的又发现了margin值合并的问题,在这里同时记录下 1. ...

  3. andriod\iphone视频禁止全屏播放

    x-webkit-airplay="true" x5-playsinline="true" webkit-playsinline="true" ...

  4. 微信小程序 checkbox 组件

    checkbox 组件 是一个多选框组件,还可以使用 checkbox-group 组件 来进行绑定事件和实现,真正意义上的多选 checkbox的属性: value: 属性值 字符串 当在 chec ...

  5. linux的find和grep区别?

    为什么会把 grep和find 这两个命令拿在一起来讨论? 是因为他们之间有一个容易混淆的地方, [在我的记忆中] : -name ? 它是find的选项! 不是grep的选项! 实际上, find基 ...

  6. Vue实现音乐播放器(七):轮播图组件(二)

    轮播图组件 <template> <div class="slider" ref="slider"> <div class=&qu ...

  7. 用Python处理字幕文件

    始 下了部老电影,找到了相关的中英文字幕,奇怪的是,英文字幕能正常现实,中文字幕却不可以,我一度以为是Linux下播放器编码的问题,但是怎么更改设置都无效,而我以前在看其他电影时,中文字幕是正常的.所 ...

  8. 练习2:python-把excel表格中某张表的内容导入sqlite

    前言:最新需要用到大批量的数据,在excel造好数据之后,存储在数据库库中,方便调用数据,于是就想着用python语言写一下这个过程 python有个openpyxl的模块,可以直接用来对于excel ...

  9. C++笔记(2)——一些语法基础知识以及基本算法知识

    今天和PAT无直接相关的关系,主要是关于一些语法/算法的笔记,因为我发现自己的基础还没有打扎实,有些时候看别人的代码还会觉得一头雾水,不明白代码的含义. 一些C/C++语法 先从语法开始吧.这部分很琐 ...

  10. C#后台保存Cookie

    一般是: Response.Cookies["backurl"].Expires.AddDays(2); 但是,IE浏览器保存Cookie用 Response.Cookies[&q ...