0

Customer table

///////////////////////////////////////////////////////////
|      id[PR]  |      name        |       email           |  
|      10      |      fabio       |     fab@fab.com       |   
|      11      |      james       |     james@james.com   |   

Order table

//////////////////////////////////////////////////////////////////
|  order_id[PR]  |  ship_to[FK]  |  bill_to[FK]   | customer[FK] |  product, total, etc
|      251       |       3       |         2      |       10     |  . . . 

Ship to table

//////////////////////////////////////////////////////////////////////
|   customer[FK]  |  ship_to[PR]  |   label   |    address           |  city, state, zip, etc
|       10        |      3        |   office  |  123 main st         |  . . .
|       10        |      1        |   home    |  85 some place st    |  . . .

Bill to table

///////////////////////////////////////////////////////////////////////////
|   customer[FK]  |  bill_to[PR]  |   label   |    account                |  billing details
|       10        |      2        |   visa    |  AES_CRYPT(temp storage)  |   . . .
|       10        |      1        |     mc    |  AES_CRYPT(temp storage)  |   . . .

さて、各顧客は自分のアカウントに複数の配送先住所と複数の支払い方法を登録できます。注文すると、注文テーブルにカートとセッションの情報が格納されます。

invoices注文テーブルを検索したときに、関連付けられたテーブルの行の代わりにのship to table行との行を表示できるように、クエリを構造化する方法を生成する必要があります。bill to tableid

さて、私は誰も私のコードを書くことを期待していませんが、もしあなたが私にそれを読むためのいくつかのリンクを教えてくれれば、それは素晴らしいか、例は素晴らしいでしょう。私はcodeigniter上に構築されているので、MVCパターンを使用していることに注意してください。

?-これらのルックアップはすべて1つのモデル関数で構成する必要がありますか、それともモデル内の複数の関数に分散させる必要がありますか?

return $this->db->get('order_table')->result();
#this would return all the orders in the order table . 

私の場合、viewこれらの結果を予測し、注文IDを詳細/請求書ページへのリンクにします。行からモデルクエリに値を渡して、適切な詳細/請求書ページを生成するにはどうすればよいですか?

例-注文251をクリックすると、詳細ページに請求書が表示されます。

  1. 顧客ID10
  2. 名前:ファビオ
  3. メール:fab@fab.com
  4. 発送先:オフィス、123メインストリート..
  5. 請求先:visa、acct#など...
4

1 に答える 1

0
$this->db->join('customerTable','customerTable.id = orderTable.customer');
$this->db->join('shipToTable', 'orderTable.ship_to = shipToTable.ship_to');
$this->db->join('billToTable', 'billToTable.bill_to = orderTable.bill_to');
$this->db->where('order_id', $orderId);
$result = $this->db->get('order_table');
if($result->num_rows()==1)
{
    return $result->result_array();
}
于 2012-10-14T21:27:18.867 に答える