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

Laravel 5 Laravel 5一对多关系主数据和父数据积垢,laravel-5,one-to-many,crud,Laravel 5,One To Many,Crud,我有一个带有日期和注释的采购表,还有一个带有purchaseId的purchasedetail表,它是采购表的外键。两个模型表中的关系为: 购买模式:- use Illuminate\Database\Eloquent\Model; class Purchase extends Model { public function purchasedetails() { return $this->hasMany('App\Models\Purchasedetail', 'Purchas

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

购买模式:-

use Illuminate\Database\Eloquent\Model;
class Purchase extends Model {
public function purchasedetails() {
    return $this->hasMany('App\Models\Purchasedetail', 'PurchaseId', 'Id');
}
  }

Purchasedetail模型:-

use Illuminate\Database\Eloquent\Model;
class Purchasedetail extends Model {
public function purchase() {
    return $this->belongsTo('App\Models\Purchase', '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中的ErrorException:preg_replace():参数 不匹配,模式为字符串,替换为数组。那个 意味着$purchase->save()不可能。这里有一个数组列表 来自输入::get('Purchasedetail')


那我现在能做什么呢

我现在可以肯定,但你可以这样做

 $purchase = new Purchase();
 ...
 $purchaseDetails = new PurchaseDetails();
 $purchaseDetails->purchaseId = $purchase->id;
 $purchaseDetails->save();
请尝试以下操作:

$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);
}

它只存储一个单数据,所有其他数据都定义为null,因为ItemId在db中为null,它应该为1。我需要插入一个数据列表。在Input::get('Purchasedetail')中,它实际上得到的是一个数据数组列表,而不是一行。您的代码很好,但在purchasedetails表中只插入了Id和PurchaseID。其他数据呢。例如,我有ItemId、Quantity和detail表。我使用您的代码如下:foreach(Input::get('Purchasedetail')作为$purchasedetails){$purchasedetails=new purchasedetails();$purchasedetails->ItemId=$purchasedetails->ItemId;$purchasedetails->GradeId=$purchasedetails->GradeId;$purchasedetails->->保存($purchasedetail);}….…但现在不插入数据。你能告诉我为什么吗?对不起,但不是工作。代码是。。。。。。。foreach(Input::get('Purchasedetail')as$purchasedetails){$purchasedetails->purchasedetails()->save(['ItemId'=>$Input['ItemId'],'Quantity'=>$Input['Quantity'],];}………..,它在RouteCollection.php行207Route::post中写着,,,,,,MethodNotAllowedHttpException(“/storePurchase”,”PurchaseController@store’);Oka,,,我得到了,虽然我对我的代码不满意,但它现在正在运行……代码:$purchasedetails->purchasedetails=Input::get('purchasedetails');foreach($purchasedetails->purchasedetails as$row){$purchasedetails=new purchasedetaild();$purchasedetaild->ItemId=$row[$purchasedetail->GradeId=$row['GradeId'];$purchasedetail->Quantity=$row['Quantity'];$purchasedetails->purchasedetails()->save($purchasedetails);},,,,,,,,,Kotapter只要在ans中添加foreach,我就会接受它,谢谢你的帮助。