关于hasOne和hasMany查询问题请教以下 [ 2.0 版本 ]
假如有2个表
A有字段a,b,c,d,e
B有字段A,B,C,D,E
就拿hasOne举例子
比如我要以a和A关联,a是主表
方法1:
A,B关联查询,比如joinWith join With,执行1次查询,饭后在列表循环书痴
方法2:
不关联,用hasOne,比如关联方法为
public function getInfos()
{
return $this->hasOne(DbModel::className(),['A'=>'a']);
}
加入我查询了
$data=a::find()->all();
显示
foreach($data as $v){//假如有4条数据
echo $v->a;//显示主表信息就是正常的输出
echo $v->infos->A;//通过hasOne显示次表信息
}
这里就是把表1的ID作为条件,$v->infos等价于B::find()->where(['id'=>'a'])->one();
那么问题来了
是不是调用一次$v->infos
就查询一次,
比如我要调用$v->infos->A,$v->infos->B,$v->infos->C,$v->infos->D,
如上次表的四个信息,那么在一个循环里,是只查询头一次,后面的根据第一次的缓存来输出,还是每次都单独查询一次,
也就是一个数据是调用一次次表属性就查一次还是只查一次
共 2 个回答
-
liangkaixin 回答于 2018-03-16 11:22 举报
应该是调用一次查询一下
竹林风
注册时间:2017-04-06
最后登录:2022-02-15
在线时长:53小时3分
最后登录:2022-02-15
在线时长:53小时3分
- 粉丝4
- 金钱135
- 威望40
- 积分1065