数据库四表树状关联

问题咨询 · jingjim · 于 6年前 发布 · 1847 次阅读

请教:四表关联 a与b 有字段关联 b与c 有字段关联 c与d 有字段关联
现在用joinwith 通过回调函数能读出c表字段 怎么查询a 读出d的数据啊?

共收到 4 条回复
Fecmall#16年前 0 个赞

我对Yii2框架封装的join了解不深,我几乎没有用过,因为被magento的join伤的太深。

我一般用多次in查询来解决这类问题,当然,如果多字段排序,而且这几个用于排序的字段存在于多个个表中,就只能用join了

用sql写个多表查询的sql语句,然后用yii2执行sql,也能出来结果的。

jingjim#26年前 0 个赞

好的,多谢老大

Fecmall#36年前 0 个赞
$db = Yii::$app->db;
$sql = ''; // 这里写你的mysql的join sql。
$data = []; // 这里是sql中出现的  :xx 等进行替换的值,如果你的sql是纯字符串,那么这里为空
$result = $db->createCommand($sql,$data)->queryAll();

jingjim#46年前 0 个赞

这是原生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数据 加盟商的数据是要怎么写?

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics