请教:四表关联 a与b 有字段关联 b与c 有字段关联 c与d 有字段关联 现在用joinwith 通过回调函数能读出c表字段 怎么查询a 读出d的数据啊?
我对Yii2框架封装的join了解不深,我几乎没有用过,因为被magento的join伤的太深。
我一般用多次in查询来解决这类问题,当然,如果多字段排序,而且这几个用于排序的字段存在于多个个表中,就只能用join了
用sql写个多表查询的sql语句,然后用yii2执行sql,也能出来结果的。
好的,多谢老大
$db = Yii::$app->db; $sql = ''; // 这里写你的mysql的join sql。 $data = []; // 这里是sql中出现的 :xx 等进行替换的值,如果你的sql是纯字符串,那么这里为空 $result = $db->createCommand($sql,$data)->queryAll();
这是原生sql吧? mysql 很容易写出来 就是运用AR Joinwith 不会写
order表 ordergoods表 goods表 merchant加盟商
order 与ordergoods 通过 order_id字段关联:
在order表 model里 建立关联 public function getOrderGoods() { return $this->hasMany(OrderGoods::className(), ['order_id' => 'order_id']);//一个order关联多个ordergoods }
ordergoods与goods表通过goods_id 和id关联: 在ordergoods表model里 建立关联 public function getGoods() { return $this->hasOne(Goods::className(), ['id' => 'goods_id']);//一个ordergoods关联一个goods; }
goods与merchant表通过merchant_id 和id关联: 在goods表merchant里 建立关联 public function getMerchant() { return $this->hasOne(Merchant::className(), ['merchant_id' => 'id']);//一个goods关联一个merchant; }
在controller引用时: $orderinfos = OrderInfo::find() ->joinWith( ['orderGoods'=>function($query){ $query->joinWith(['goods']);//ordergoods关联goods表 }] ) ->where('添加条件') ->all() 这样可以读出goods数据 加盟商的数据是要怎么写?