0

多くの関係を持つ多くのテーブルを持つデータベースに基づいて Web アプリケーションを作成しています。

たとえば、多くの関係を持つ [Items] を含むテーブルがあります。

各 [アイテム] には 1 つの [グループ] があります

各[アイテム]には複数の[材料]があります

各[材料]には1つの[タイプ]があります

私のコードは暴走しています。「name」や「id」などのフィールドが入力された「edit_item_record」フォームを作成しましたが、ドロップダウンとサブアイテムに問題があります。

[項目] に関連するすべて (名前、グループ、成分) を 1 ページにまとめたフォームの作成方法がわかりません。このようなフォームを送信するには、多くのテーブルで複数の挿入または更新が必要になる場合があります。これをどのように処理しますか?

1 つのテーブルと 2 つのフィールドを持つブログよりも大きなアプリケーションを設計する方法を説明する CodeIgniter のチュートリアルを見た人はいますか?

4

1 に答える 1

1

チュートリアルを通じてこの種のことを理解するつもりはありません。ブログタイプのチュートリアルで学んだことを取り入れて、状況に適用する必要があります。私のアプリケーションでは、製品を追加するだけで7つのテーブルに影響を与える可能性があります。

これは何よりもワークフローに関する質問です。ペンとパッドを持って座って、物事がどのように機能するか、テーブルがどのように関連するか、データを追加するためのフローを計画する必要があります。コーディングを開始する前に、データを追加する方法を理解する必要があります。挿入する前に他のテーブルからの情報が必要なテーブルなどです。たとえば、単純な製品の場合、製品テーブルと製品イメージの別のテーブルに基本データがあります。明らかに、この場合、最初に製品テーブルを挿入して、画像テーブルに追加するIDを取得する必要があります。はい、複数の挿入が発生することになります。実際、新しいメンバーを追加すると、データの動作方法が原因で、ルーチンが1つのテーブルに2回挿入します。

時間をかけて計画を立ててください。これは、誰も役に立たない状況です。テーブルとデータフローを論理的に見て、まとめることです。

簡単な部分である1つのフォームにすべてのデータを置くことに関して。結合を使用したクエリを使用して、コントローラー内のデータをプルするだけです。これらの線に沿った何か。

コントローラ:

$data['products'] = $this->product->getAllProductDetails($productId);

モデル:

$this->db->where('productId',$productId);
$this->db->join('product_images','product_images.productId=products.productId');
$this->db->join('manufacturers','manufacturers.manufacturerId=products.productId');
$this->db->get('products');

上記は、すべての商品、商品画像、メーカー情報を変数$ productsにプルして、ビューで使用できるようにします。次に、保存ボタンに、これらのテーブルごとに個別に保存を呼び出す別のコントローラー関数があります(挿入または更新、個人的にはどちらが必要かを決定する保存関数があります)。

于 2012-10-30T10:30:36.703 に答える