请问如何对关联表的子表进行查询?

#1 dcf80

一对一关联为例子
user表
1 灰太狼
2 小羊羊
user_detail表
1 不像草原上的王者
2 是一只羊

我想直接对 user_detail 进行查询 该如何操作?

2010-02-18 17:34:56

#2 colddream336

如果是一一对应的表 我理解为主键id一样
只需要对id查询就行了,如果是接收名字查询细节的话

$username=$this->spArgs("username");//接收传递过来的用户名字
$user=spClass("user");//初始化用户表
$conditions=array('username'=>$username);
$result=$user->find($conditions);//找出user表里的那条记录(假设没有重复名字)
$user_detail=spClasee("user_detail");//初始化细节表
$conditions=array('id'=>$result['id']);
$result2=$user_detail->find($conditions);//找出记录
echo "{$username} 的细节是:{$result2['detail']} "//输出


我也是新手有错误请各位指出。

2010-02-18 18:49:31

#3 jake

spClass("user_detail")->*

2010-02-18 19:39:02

#4 dcf80

这种操作是对单表的操作,
我希望的是关联查询
$conditions = array(  
   'detail' => array(  
        'intro' => "不像草原上的王者"   //查询条件
   ),  
);  
$userObj = spClass("user");  
$result = $userObj->spLinker()->find($conditions);  

但好象这种方式无法实现。

2010-02-20 15:55:33

#5 jake

这种操作是对单表的操作,
我希望的是关联查询
$conditions = array(  
   'detail' => array(  
        ' ...
dcf80 发表于 2010-2-20 15:55
这个方式本身从逻辑上是有偏差的。在楼上的说法看,user是主表,user_detail是从表。
现在,如果要以user_detail查询,然后再关联user表,那么就应该是user_detail是主表,user是从表。


你可以在user_detail内设置user的关联,那么就可以以查询user_detail开始,再关联到user的记录了。

2010-02-20 16:58:09