簡體   English   中英

Laravel一對多CRUD示例

[英]Laravel One to many CRUD Example

我是Laravel的新手。 我想使用Laravel4將數據插入某些主明細表 我在整個互聯網上搜索,找不到合適的解決方案。

我有兩個(加一)表,如下所示。

PO_HEADER

PO_HEADER_ID
SUBJECT
PO_DATE 

PO_DETAIL

PO_DETAIL_ID
PO_HEADER_ID
DESCRIPTION
AMOUNT
QTY
UNIT_OF_MEASURE_ID

測量單位

UNIT_OF_MEASURE_ID
UNIT_OF_MEASURE

我應該能夠在按下SAVE BUTTON的同時一次插入PO主記錄以及盡可能多的PO詳細記錄。 詳細信息部分中的度量單位應該是一個下拉列表(從UNIT_OF_MEASURE表填充)

請提出如何輕松實現這一目標。 提前致謝!

這取決於您的模型是否正確設置:

class PurchaseOrder extends \Eloquent
{
    protected $fillable = [
        'subject',
        'date'
    ];

    public function detail()
    {
        return $this->hasMany('PurchaseOrderDetail');
    }
}

class PurchaseOrderDetail extends \Eloquent
{
    protected $fillable = [
        'description',
        'amount',
        'qty'
    ];

    protected $with = [
        'unitOfMeasure',
    ];

    public function header()
    {
        return $this->belongsTo('PurchaseOrder');
    }

    public function unitOfMeasure()
    {
        return $this->hasOne('UnitOfMeasure');
    }
}

class UnitOfMeasure extends \Eloquent
{
    protected $fillable = [
        'name'
    ];

    public function lineItems()
    {
        return $this->belongsToMany('PurchaseOrderDetail');
    }
}

您還需要使用適當的設置來設置遷移,如下所示:

//migration for purchaseorder table
public function up()
{
    Schema::create('purchaseorders', function(Blueprint $table)
    {
        $table->increments('id');
        $table->string('subject');
        $table->string('date');
        $table->timestamps();
    });
}

//migration for purchaseorderdetail table
public function up()
{
    Schema::create('purchaseorderdetails', function(Blueprint $table)
    {
        $table->increments('id');
        $table->integer('purchaseorder_id')->unsigned()->index();
        $table->integer('unitofmeasure_id')->unsigned()->index();
        $table->foreign('purchaseorder_id')->references('id')->on('purchaseorders');
        $table->string('description');
        $table->float('amount');
        $table->float('qty');
        $table->timestamps();
    });
}

//migration for unitsofmeasure table
public function up()
{
    Schema::create('unitsofmeasure', function(Blueprint $table)
    {
        $table->increments('id');
        $table->string('name');
        $table->timestamps();
    });
}

我希望那應該可以使您相當接近您的需求。 :)然后,您可以查詢您的商品,如下所示:

$po-details = PurchaseOrderDetail::with(['purchaseOrder', 'unitOfMeasure')->find($id);

這是過於簡化的控制器方法的外觀:

class PurchaseOrderController
{
    public function show($id)
    {
        $purchaseOrders = PurchaseOrder::with('detail')->find($id);

        return View::make('purchaseOrder.show', compact('purchaseOrders'));
    }
}

然后您的視圖:@foreach($ purchaseOrders為$ purchaseOrder)@foreach($ purachseOrder-> detail為$ lineItem)@endforeach @endforeach

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM