Laravel 5一对多关系主数据和父数据CRUD



我有一个带有日期和注释的采购表,以及一个带有purchaseId作为采购表外键的purchasedetail表。两个模型表中的关系是:

采购模式:-

use IlluminateDatabaseEloquentModel;
class Purchase extends Model {
public function purchasedetails() {
    return $this->hasMany('AppModelsPurchasedetail', 'PurchaseId', 'Id');
}
  }

以及
采购细节模型:-

use IlluminateDatabaseEloquentModel;
class Purchasedetail extends Model {
public function purchase() {
    return $this->belongsTo('AppModelsPurchase', 'PurchaseId', 'Id');
}
}

如何创建、更新和删除具有关系的表数据?我的主要问题是,当我将数据发送到控制器并尝试创建时,母版页数据被创建,但它无法创建父表数据或更新它。我正在使用Laravel 5。

我的控制器的一些代码:

$purchase = new Purchase();
    $purchase->Date = Input::get('Date');
    $purchase->Comment = Input::get('Comment');
    $purchase->purchasedetails = Input::get('Purchasedetail');
$purchase-> save();
if (count($purchase->purchasedetails) != 0) {
foreach ($purchase->purchasedetails as $v) {
    $purchasedetail = new Purchasedetail();
    $purchasedetail->ItemId = $v->ItemId;
return $v->ItemId;
    }
}
$purchase-> Purchasedetail()->save($purchasedetail);

我得到这个错误的回报:

helpers.php第703行出现错误异常:preg_replace():参数不匹配,模式是字符串,而替换是数组。那个意味着$purchase->save()不可能。在这里我得到一个数组列表来自输入::get("Purchasedetail")。

那么我现在该怎么办呢?

尝试以下操作:

$purchase = new Purchase();
$purchase->Date = Input::get('Date');
$purchase->Comment = Input::get('Comment');
$purchase-> save();
$purchase->purchasedetails = Input::get('Purchasedetail');
foreach ($purchase->purchasedetails as $row) {
    $purchasedetail = new Purchasedetail();
    $purchasedetail->ItemId = $row['ItemId'];
    $purchasedetail->GradeId = $row['GradeId'];
    $purchasedetail->Quantity = $row['Quantity'];
    $purchase->purchasedetails()->save($purchasedetail);
}

我现在很确定,但你可以这样做。

 $purchase = new Purchase();
 ...
 $purchaseDetails = new PurchaseDetails();
 $purchaseDetails->purchaseId = $purchase->id;
 $purchaseDetails->save();

最新更新