インスタンス化されたときに「製品」テーブルからデータをフェッチする製品クラスがあり、その中に「カテゴリ」オブジェクト(製品->カテゴリ)を作成して、カテゴリテーブルからデータを取得します。私の問題は、同じカテゴリの複数の製品がリストされている場合にどうなるかということです。それらは同じカテゴリのものであるため、カテゴリ オブジェクトを作成するために複数の等しいクエリが作成されます。これを解決するには?
質問する
71 次
4 に答える
2
SQL で JOIN を使用します。
SELECT *
FROM product
LEFT JOIN category ON product.category_id = category.id;
于 2012-05-10T08:14:42.200 に答える
1
オブジェクトを作成するファクトリを使用し、コンストラクターで渡される製品/カテゴリのデータのオプションを提供します。ファクトリは、リストされるすべての製品のデータをロードし、製品オブジェクトをインスタンス化して、既にフェッチされたデータを提供します。
于 2012-05-10T08:17:31.217 に答える
0
ループ内でSQLクエリを実行することはお勧めできません。
あなたができることは、カテゴリテーブルで製品テーブルを左結合することです。
$select = SELECT *
FROM product
LEFT JOIN category ON product.category_id = category.id;
次に、クエリを実行してから、ループを実行できるように製品をカテゴリベースに分類します
$result = mysql_query($select);
while($data = mysql_fetch_assoc($result)){
$product_info['product_name'] = $data['product_name'];
$product_info['price'] = $data['product_price'];
$product[$data['category']][$data['product_id']] = $product_info;
}
このループは、同じカテゴリに分類される製品を分類するのに役立つ魔法を実行します。また、より効果的な方法でデータを表示できます。
于 2012-05-10T08:28:11.063 に答える