我有3張表,一張商品表,一張店面表,一張店面_商品關(guān)系表,是這樣的:商品表(商品編號,商品名稱,商品規(guī)格,商品圖片,商品簡介)店面表(店面編號,店面名稱,店面狀態(tài),店面公告)店面_商品關(guān)系表(店面編號,商品編號,售價(jià),庫存,商品狀態(tài))而我根據(jù)‘店面編號’,想得到:商品編號,商品名稱,商品規(guī)格,商品圖片,商品簡介,售價(jià),庫存,商品狀態(tài)。所以只需要查2張表就行了。然后原生的sql:SELECT 店面_商品關(guān)系表.商品編號,商品名稱,商品規(guī)格,商品圖片,商品簡介,售價(jià),庫存,商品狀態(tài) FROM 店面_商品關(guān)系表 LEFT JOIN 商品表 ON(店面_商品關(guān)系.商品編號=商品表.商品編號) WHERE 店面編號={$mallid}換成joinWith不明白的地方:$rs=MallToGoods::findBySql("SELECT `GoodsID`,`GoodsPrice`,`GoodsNum`,`GoodsState` FROM `malltogoods` WHERE `MallID`={$mallid}")->joinWith('goodslist','true','LEFT JOIN')->asarray()->all();return $rs;這樣子能把malltogoods表里的GoodsID,GoodsPrice,GoodsNum,GoodsState都查出來,可是查不出'goodslist'表里的,后來我嘗試把 ‘商品名稱,商品規(guī)格,商品圖片,商品簡介’都寫到select里頭,它會(huì)報(bào)錯(cuò)在 店面_商品關(guān)系表 里沒有這些列。所以我不明白我要怎么同時(shí)讓2個(gè)表里要查的都顯示在一起??戳宋臋n上的 活動(dòng)記錄->中間關(guān)聯(lián)表:有時(shí),兩個(gè)表通過中間表關(guān)聯(lián),定義這樣的關(guān)聯(lián)關(guān)系, 可以通過調(diào)用?yii\db\ActiveQuery::via()?方法或yii\db\ActiveQuery::viaTable()?方法來定制 yii\db\ActiveQuery 對象 。舉例而言,如果 order 表和 item 表通過中間表 order_item 關(guān)聯(lián)起來,可以在 Order 類聲明 items 關(guān)聯(lián)關(guān)系取代中間表:class Order extends \yii\db\ActiveRecord{ ? ?public function getItems() ? ?{ ? ? ? ?return $this->hasMany(Item::className(), ['id' => 'item_id']) ? ? ? ? ? ?->viaTable('order_item', ['order_id' => 'id']); ? ?}}所以我想也應(yīng)該在我的model中添加關(guān)聯(lián)。可是 店面和商品間是多對多的關(guān)系,一個(gè)店面下可以有多個(gè)商品,一個(gè)商品可以在多個(gè)店面下。我要添加怎么樣的關(guān)聯(lián),而‘店面_商品關(guān)系表’和‘店面表’存在關(guān)系嗎?還是說我的表設(shè)計(jì)的不合理?我不明白了,簡單的說就是不明白原生的sql怎么改到這上面去。
yii2能在一個(gè)查詢結(jié)果中顯示2張表中的字段嗎?就像原生的sql用LEFT JOIN這種,yii里的joinWith怎么不行?
hello_world_
2015-07-29 12:40:00