对于ThinkPHP学习笔记多表查询
在操作过程中,两个表没有问题,但是三个查询开始出现问题。有三张桌子,包括桌子的PL(UID,内容),用户表(ID、用户名),的LYB表(UID,标题)。
多表查询操作有几种方法:
视图模型(推荐)
定义视图模型,你只需要继承认为 ViewModel模式,然后设置视场特性
公共视场=阵列(美元
PL= >阵列('uid ','rid,'content'),
用户= >阵列('id','username ','_on= > 'pl.uid =用户ID),
LYB= >阵列('uid= > 'lid,'content' = > 'lyb_content,标题,'_on= > 'pl.uid = LYB。UID),如果有相同的表或字段,可以设置=>别名,'uid= > 'lid
);
视图查询:
由于视图查询与不同模型的查询相同,所以没有差别。
美元= D(PL模型)->现场('uid、标题、用户名、lyb_content)->选择(); / / PL是数据库的名称
如果查询结果发现有重复的数据,也可以使用组方法进行处理。
两加入
连接方法也是根据两个或多个表中的列之间的关系来从这些表查询数据的一致操作方法之一。
连接通常具有以下类型,不同类型的连接操作会影响返回的数据结果。
内部联接:如果表中至少有一个匹配,则返回行,相当于连接。
左联接:即使在右表中没有匹配,所有的行都从左表返回。
右联接:即使在左表中没有匹配,所有的行都从右表返回。
完全联接:只要有一个表中有一个匹配,则该行返回
连接方法可以支持以上四种类型:
上述三个表的操作也是一样的。
元= d()
->加入(在pl.uid = LYB。UID的'lyb)
->加入(用户对pl.uid =用户ID)
->现场(user.username,lyb.title,pl.content)
>选择();
表三
表方法也属于模型类的一种相干操作方法,主要用于指定操作的数据表。
使用
一般来说,当模型运行时,系统可以自动识别当前的数据表,因此表方法的使用通常是为了:
用于交换操作的数据表;
多表操作;
元= d()
->现场(pl.content,user.username,LYB。标题)
->表('pl、LYB、用户)
>限制(10)
>选择();
注意:表方法是所有字段值的默认查询。