連結テーブル・クエリーの代わりに配列接合を使用する
1397 ワード
マルチテーブルはテーブルクエリーが面倒でエラーが発生しやすい場合があり、効率的に単一テーブルが速いとは限らない.連結テーブル・クエリーの代わりに、単一のテーブル・クエリーを使用できます.
単一テーブルクエリは、結果をつなぎ合わせる必要があります.
状況:表A、表B関係はB表中a_id=Aテーブルのid.表Aと表Bは1対多の関係または1対1の関係である
$ar=$db->('select*form A where条件')
$ar 2 D配列
単一テーブルクエリは、結果をつなぎ合わせる必要があります.
状況:表A、表B関係はB表中a_id=Aテーブルのid.表Aと表Bは1対多の関係または1対1の関係である
$ar=$db->('select*form A where条件')
$ar 2 D配列
$ids=array_column($ar,'id');
$br=$db->('select * from B where a_id in ('.join(',',$ids).') ');//
1: ,
foreach($ar as $k=>$v){
foreach($br as $k1=>$v1){
if($v['id']==$v1['a_id']){
$ar[$k]['b_list'][]=$v1;
}
}
}
, foreach , 。
2: $br , $ar
$cr=[];
foreach($br as $k=>$v){
$cr[$v['a_id']][]=$v; // A B :$cr[$v['a_id']]=$v;
}
foreach($ar as $k=>$v){
if(isset($cr[$v['id']])){
$ar[$k]['b_list']=$cr[$v['id']];
}else{
$ar[$k]['b_list']=[];
}
}
, 。 1