ฉันอาจจะซับซ้อนเกินไป แต่นี่คือความสัมพันธ์ที่ฉันพยายามเขียนเป็นภาษา Eloquent (Laravel 5):
ฉันมีรายการสินค้าและราคารายการ สินค้าแต่ละรายการสามารถมีรายการราคาได้หลายรายการ นี่เป็นเรื่องง่ายที่จะทำ แต่นี่เป็นอีกสิ่งหนึ่ง - สำหรับทุกผลิตภัณฑ์ ‹> การกำหนดรายการราคา ฉันสามารถกำหนดราคาได้หลายราคาตามปริมาณ ดังนั้น:
productID: 1010
priceListId: 1
min quantity: 1 -> price 10.00
min quantity: 5 -> price 9.50
min quantity: 10 -> price 9.00
productID: 1010
priceListId: 2
min quantity: 1 -> price 15.00
min quantity: 40 -> price 14.00
min quantity: 90 -> price 12.00
ฉันคิดว่าฉันรู้วิธีสร้างตารางเดือยแบบกำหนดเอง แม้ว่าฉันจะใช้งานไม่เป็นก็ตาม ฉันติดตามลิงก์นี้ ตอนนี้ฉันไม่แน่ใจว่ารหัสของฉันถูกต้องหรือไม่ และวิธีการใช้งาน
ในขณะนี้ฉันมี:
รุ่นสินค้า:
class Product extends Model {
public function pricelists()
{
return $this->belongsToMany('PriceList');
}
public function newPivot(Model $parent, array $attributes, $table, $exists)
{
if ($parent instanceof PriceList)
{
return new ProductPricePivot($parent, $attributes, $table, $exists);
}
return parent::newPivot($parent, $attributes, $table, $exists);
}
}
รายการราคารุ่น:
class PriceList extends Model {
public function products()
{
return $this->belongsToMany('Product');
}
public function newPivot(Model $parent, array $attributes, $table, $exists)
{
if ($parent instanceof Product)
{
return new ProductPricePivot($parent, $attributes, $table, $exists);
}
return parent::newPivot($parent, $attributes, $table, $exists);
}
}
หมุน:
class ProductPricePivot extends Pivot {
public function product()
{
return $this->belongsTo('Product');
}
public function pricelist()
{
return $this->belongsTo('PriceList');
}
public function prices()
{
return $this->hasMany('ProductPrice');
}
}
ตอนนี้ ProductPrice ขยาย Model อีกครั้ง และเป็นเพียงโมเดลมาตรฐานที่ไม่มีวิธีการเพิ่มเติมใดๆ
สิ่งนี้ถูกต้องหรือไม่? หากเป็นเช่นนั้น ตามตัวอย่างจากด้านบน ฉันจะเพิ่มปริมาณ/ระดับราคาใหม่ไปยังรายการราคา 1 บนผลิตภัณฑ์ 1010 ได้อย่างไร
ในขณะนี้ เมื่อสร้างความสัมพันธ์ ฉันกำลังทำ:
$productID = 1010;
$priceListID = 1;
$priceList = PriceList::find($priceListID);
$priceList->products()->attach($productID);
$productToPriceList = $priceList->products()->find($productID);
และฉันหลงทางอยู่ที่นี่... ฉันพบความสัมพันธ์นี้ แต่ตอนนี้ฉันจะแนบระดับราคาถัดไปของปริมาณ ‹> ได้อย่างไร
ใครช่วยยกตัวอย่างวิธีใช้ความสัมพันธ์ดังกล่าวหรือลิงก์ไปยังหน้าที่ฉันสามารถหาอะไรเพิ่มเติมได้บ้าง ใช่ ฉันตรวจสอบเอกสารของ Laravel และใช่ ฉันก็ค้นหาใน Google เช่นกัน
ขอบคุณ!