2014-12-05 111 views
0

我正在用laravel 4構建電子商務應用程序4 我迷失了正確的方式來管理稅收和選項。 以下是我在數據庫中已經做了:所需產品選項laravel

products table: id,name,price,id_taxe 
Got a tax table : id,name,rate 

非常簡單,laravel車型

但是麻煩來管理這個從部分:

產品必須有自己的價格和稅收的選擇率(不同於產品),選項有最小和最大數量,取決於所選產品。

實例

如果我買產品1(100美元),選項1需要至少1量(分鐘)到10個產品(最大),如果我買11×產品1,選項1需要至少2個數量。

如果我買了產品2(200美元),選項1是至少需要1個數量多達5個產品。

我不知道如何以正確的方式進行管理。

我應該創造這樣的產品表中的產品的選擇嗎? 如何使用laravel關係鏈接產品和選項(包括最小和最大限制)。

感謝您的幫助。

+0

你說的是「選項」和「選項1」,你是什麼意思由什麼呢?購買產品有什麼限制,我從你的問題中得到了什麼:你想要爲每個產品購買最低/最高金額。但後來我讀到:「如何鏈接產品與選項(包括最小和最大限制)」。這表明這個'選項'還有更多的東西比你能從問題中得出的更多。 – 2014-12-05 12:03:35

+0

對於此刻也適用於所有的產品只有一個選擇,但我可以在以後更改,約束是,當我買了一個產品,我也買了一些選擇與依賴的產品,例如最大選項產品1是10,如果我買了11個產品,11/10 = 1.1,最小選項數量是2,並且max是10(1對每產品),更清楚了嗎? – user3384179 2014-12-05 12:35:11

回答

0

好吧,我會給它一個。

根據您的意見,最好的辦法似乎是通過數據透視錶鏈接選項,在這個數據透視表中也應該是數字,它表示每訂購一個x數量的產品,您將獲得多少這些選項。

遷移:

Schema::create('product_options', function(Blueprint $table){ 
$table->integer('product_id')->unsigned(); 
$table->integer('option_id')->unsigned(); 

$table->integer('per_x_products'); 

$table->foreign('product_id') 
    ->references('id')->on('products') 
    ->onDelete('cascade') 
    ->onUpdate('cascade'); 
$table->foreign('option_id') 
    ->references('id')->on('options') 
    ->onDelete('cascade') 
    ->onUpdate('cascade'); 
} 

關係在產品表:

public function options(){ 
return $this->belongsToMany('Option', 'product_options','product_id','option_id') 
    ->withPivot(['per_x_products']); 
} 

一旦你的產品的ID,並下令量的產品訂單。您現在可以獲得產品,相關選項以及選項增加的訂購產品的數量。

$product = Product::find($id); 

foreach($product->options as $option){ 

$perXProducts = $option->pivot->per_x_products 

$minusThis = $amountOrdered % $perXProducts; 

$amountOfOptions = ($amountOrdered - $minusThis)/$perXProducts; 

$optionAmountsById[$option->id] = $amountOfOptions; 
} 

你可以試試上面,看多遠,你得到的,這是我所有的心靈的頂部,這樣可能會有一些錯誤在那裏。也到這裏看看:

http://laravel.com/docs/4.2/eloquent#working-with-pivot-tables

+0

嗨,偉大的解決方案來解決我的問題,謝謝,將嘗試與我的其他問題實現這一點(請參閱我的其他問題)。多謝。 – user3384179 2014-12-07 06:46:48