亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請教各位一個問題,求解答:TP5關于一對多關聯查詢的搜索問題

請教各位一個問題,求解答:TP5關于一對多關聯查詢的搜索問題

繁花不似錦 2019-09-19 13:21:17
在開發商城的時候,需要對訂單進行搜索,輸入框的內容用來查詢訂單號或商品名稱。目前訂單表和訂單商品表是分開的,查詢訂單列表使用關聯查詢,如下://$this是訂單表模型,goods是訂單商品表模型publicfunctiongoods(){return$this->hasMany('goods','order_id','id','g');}publicfunctiongetList(){$map=['o.order_no|g.goods_name'=>['like','%A%']];$result=$this->alias('o')->with(['goods'])->where('user_id','=',$userId)->where($map)->order(['createtime'=>'desc'])->page($page,10)->fetchSql(true)->select();}返回結果:SELECT*FROM`order``o`WHERE`user_id`=5AND(`o`.`order_no`LIKE'%A%'OR`g`.`goods_name`LIKE'%A%')ORDERBY`createtime`DESCLIMIT0,10去掉fetchsql的錯誤提示(goods_name字段是正確的):SQLSTATE[42S22]:Columnnotfound:1054Unknowncolumn'g.goods_name'in'whereclause'更新:目前使用的了LEFTJOIN的寫法實現模糊查詢的效果,但是實際上是要查詢訂單列表,LEFTJOIN之后將產品數據組合成訂單會發現這里的分頁效果會有問題,搜出10條產品有可能是3個訂單也有可能是5個訂單。$search=$keyword?['o.order_no|g.goods_name'=>['like',"%{$keyword}%"]]:[];$list=$this->alias('o')->field('o.*,g.goods_id,g.images,g.goods_name,g.goods_attr,g.goods_no,g.goods_price')->join('goodsg','o.id=g.order_id','left')->where('o.user_id',$userId)->where($search)->order('o.createtime','DESC')->page($page,10)->select();請問要怎么編寫條件來實現訂單號和商品名稱的模糊查詢呢?補充:謝謝解答,目前想到的解決方案是查詢的時候訂單JOIN產品查出訂單,之后再查出產品列表組合結果集。
查看完整描述

2 回答

?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

那就直接使用Db類操作數據庫吧
$search=$keyword?['o.order_no|g.goods_name'=>['like',"%{$keyword}%"]]:[];
$list=Db::name('goodsg')
->field('o.*,g.goods_id,g.images,g.goods_name,g.goods_attr,g.goods_no,g.goods_price')
->join('ordero','o.id=g.order_id')
->where('o.user_id',$userId)
->where($search)
->group('o.order_id')
->order('o.createtime','DESC')
->page($page,10)
->select();
                            
查看完整回答
反對 回復 2019-09-19
  • 2 回答
  • 0 關注
  • 311 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號