《新手提问》数据关联查询 [ 2.0 版本 ]
表Medicine(id)、 dialectical(medicine_id)
我在dialectical模型中定义
public function getRel()
{
return $this->hasMany(MedicinesItem::className(), ['id' => 'medicine_id'])->asArray()->all();
}
然后在controller调用
$rel = DialecticalMedicinesRel::find()->with('rel')->all();
然后发生了错误,我记得之前我这么写是完全正确的,这次不知道那个地方出了问题
飒雅 补充于 2016-10-13 15:20
还是不对呀。
首先我先确定一下我的两个表的数据都存在的,而且照你们方法做了之后的打印截图
共 5 个回答
-
首先你的关联方法写的不对,如一楼所说,不用加hasMany方法后需的接连操作,方法如下
public function getRel() { return $this->hasMany(MedicinesItem::className(), ['id' => 'medicine_id'])->asArray()->all(); }
其次如二楼所说,你在后面调用时该使用
joinwith()
而非with()
,代码如下$rel = DialecticalMedicinesRel::find()->joinwith('rel')->all();
还有一个提示,就是你在getRel方法中用的是
hasMany()
这个方法,在这里你需要弄明白两张表中间的关系,个人认为应该是你的一个dialectical
对象只能对应一个Medicine
,所以应该是hasOne()
这个方法。上善者若水8 觉得很赞
飒雅 北京
注册时间:2016-06-12
最后登录:2019-02-25
在线时长:11小时38分
最后登录:2019-02-25
在线时长:11小时38分
- 粉丝6
- 金钱5
- 威望0
- 积分115