日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

tp5循环查询语句_tp5 foreach 套循环的优化(就是foreach 里边再查表)

發布時間:2025/3/12 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tp5循环查询语句_tp5 foreach 套循环的优化(就是foreach 里边再查表) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

優化建議:

1.不要foreach里邊再查詢表,因為循環多次查表會很占資源的

2.沒有辦法就關聯表查詢join

例子:

原寫法:

$rsdo=Db::name('order')->field('id,number,pay_number,type')->where('user_id', $user_id)->where('state',0)->where('deleted',0)->select();

if(!empty($rsdo)){

foreach($rsdo as $rsdel){

//查詢order_product中有沒有相應number的商品,如果沒有就刪除訂單記錄

$prs=Db::name('order_product')->field('id')->where('user_id', $user_id)->where('number',$rsdel['number'])->find();

if(!$prs['id']){//不存在就刪除

Db::name('order')->where('id',$rsdel['id'])->delete();

}

}

}

優化語句:(沒有實測,大概意思)

$rsdo=Db::name('order')->field('id,number,pay_number,type')->where('user_id', $user_id)->where('state',0)->where('deleted',0)->select();

if(!empty($rsdo)){

$number_list = array_column($rsdo, 'number');

$prs = Db::name('order_product')->field('id')->where('user_id', $user_id)->where('number',['in', $number_list])->column('id','number');

$delete_order_ids = [];

foreach($rsdo as $rsdel){

//不存在就刪除

if(empty($prs[$rsdel['number']])){

$delete_order_ids[] = $rsdel['id'];

}

}

$delete_order_ids = array_unique($delete_order_ids);

if(!empty($delete_order_ids)){

Db::name('order')->where('id',['in', $delete_order_ids])->delete();

}

}

總結

以上是生活随笔為你收集整理的tp5循环查询语句_tp5 foreach 套循环的优化(就是foreach 里边再查表)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。