2017-11-03 09:15:03 2682次浏览 2条回答 0 悬赏 10 金钱

假如有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,
如上次表的四个信息,那么在一个循环里,是只查询头一次,后面的根据第一次的缓存来输出,还是每次都单独查询一次,
也就是一个数据是调用一次次表属性就查一次还是只查一次

您需要登录后才可以回答。登录 | 立即注册
竹林风
经理

竹林风

注册时间:2017-04-06
最后登录:2022-02-15
在线时长:53小时3分
  • 粉丝4
  • 金钱135
  • 威望40
  • 积分1065

热门问题