Thinkphp 关联查询 详解 简单而方便的理解关联查询

关联查询

本人使用的是thinkphp3.2.3版本
由于性能问题,新版取消了自动关联查询机制,而统一使用relation方法进行关联操作,relation方法不但可以启用关联还可以控制局部关联操作,实现了关联操作一切尽在掌握之中。
所以今天讲的主要是relation函数的具体使用方法
由于一对多模型比较适合讲解,所以在这里我将用一对多模型来为大家讲解一下relation函数的具体使用方法。

  • 给relation方法传入参数来控制要关联查询的数据表

    数据关联配置如下
    Thinkphp 关联查询 详解 简单而方便的理解关联查询_第1张图片

当relation的参数为true时

 $user = new \Home\Model\RelevantModel('Student');
 $data = $user->relation(true)->find();
 var_dump($data);

运行结果如下
Thinkphp 关联查询 详解 简单而方便的理解关联查询_第2张图片

由于本人就关联了两个表 一个Subject 一个Test relation方法里的参数为true时 查询会把所有的关联表和它自己本身都查询出来

当relation的参数为数据表名时时

 $user = new \Home\Model\RelevantModel('Student');
 $data = $user->relation('Subject')->find();
 var_dump($data);

运行结果如下

Thinkphp 关联查询 详解 简单而方便的理解关联查询_第3张图片

此时只有本身数据和关联表Subject的数据被查询出来,所以这里说明当relation方法的参数为数据表名意思是查询指定关联表的内容和本身的内容

  • 这里我想肯定会有人问如果我只是想查询关联表里的数据该怎么办呢

    这其实也非常好解决 thinkphp提供了relationGet方法来帮我们完成这个需求

代码如下

 $user = new \Home\Model\RelevantModel('Student');
 $user->relation(true)->find();
 $data = $user->relationGet("Subject");
 var_dump($data);

效果如下

Thinkphp 关联查询 详解 简单而方便的理解关联查询_第4张图片

这样就可以完成了

关联查询的方法我就知道这么多了 如果以后学到更多 我会继续补充

感谢大家的观看 谢谢大家

你可能感兴趣的:(thinkphp)