2015-11-25 64 views
2

我有一个包含日期和注释的采购表以及purchaseId作为采购表的外键的purchasedetail表。在这两个模型表之间的关系是:Laravel 5一对多关系主数据和父数据CRUD

采购模式: -

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

我得到这个错误的回报:

ErrorException在helpers.php线703的preg_replace():参数 不匹配,pattern是一个字符串,而替换是一个数组。那 意味着$ purchase-> save()不可能。这里我从Input :: get('Purchasedetail')获得一个数组列表 。

那么我现在可以做什么?

回答

1

尝试以下操作:

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

那么它只能存储一个数据辛格运河和所有其他数据定义null作为项目Id是在分贝空,它应该是1。我需要插入列表数据。在Input :: get('Purchasedetail')中,它实际上得到的不是一行数据的数组列表。 –

+0

我编辑了我的答案。 – kotapeter

+0

您的代码很好,但只有Id和Purchase_Id插入purchasedetails表中。其他数据呢?例如我有ItemId,Quantity,详细信息表。我使用的代码如下所示:foreach(Input :: get('Purchasedetail')as $ purchasedetails){ \t $ purchasedetail = new Purchasedetail(); \t $ purchasedetail-> ItemId = $ purchasedetails-> ItemId; \t $ purchasedetail-> GradeId = $ purchasedetails-> GradeId; \t $ purchasedetail-> Quantity = $ purchasedetails-> Quantity; \t $ purchase-> purchasedetails() - > save($ purchasedetail); } .....但现在没有数据插入。你能解答为什么吗? –

0

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

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