我有一个包含日期和注释的采购表以及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')获得一个数组列表 。
那么我现在可以做什么?
那么它只能存储一个数据辛格运河和所有其他数据定义null作为项目Id是在分贝空,它应该是1。我需要插入列表数据。在Input :: get('Purchasedetail')中,它实际上得到的不是一行数据的数组列表。 –
我编辑了我的答案。 – kotapeter
您的代码很好,但只有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); } .....但现在没有数据插入。你能解答为什么吗? –