Laravel 5 一对多关系主父数据CRUD
Laravel 5 One-to-many relationship master and parent data CRUD
我有一个带有日期和评论的购买 table 和一个带有 purchaseId 作为购买外键的 purchasedetail table table。两个模型中的关系 table 是:
购买型号:-
use Illuminate\Database\Eloquent\Model;
class Purchase extends Model {
public function purchasedetails() {
return $this->hasMany('App\Models\Purchasedetail', 'PurchaseId', 'Id');
}
}
和
采购详情型号:-
use Illuminate\Database\Eloquent\Model;
class Purchasedetail extends Model {
public function purchase() {
return $this->belongsTo('App\Models\Purchase', 'PurchaseId', 'Id');
}
}
如何创建、更新和删除具有关系的 table 数据?
我的主要问题是当我将数据发送到控制器并尝试创建时,创建了母版页数据但它无法创建父 table 数据或更新它。
我正在使用 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);
我在 return 中收到此错误:
ErrorException in helpers.php line 703: preg_replace(): Parameter
mismatch, pattern is a string while replacement is an array. That
means $purchase->save() can not possible. Here i get an array list
from Input::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);
}
我有一个带有日期和评论的购买 table 和一个带有 purchaseId 作为购买外键的 purchasedetail table table。两个模型中的关系 table 是:
购买型号:-
use Illuminate\Database\Eloquent\Model;
class Purchase extends Model {
public function purchasedetails() {
return $this->hasMany('App\Models\Purchasedetail', 'PurchaseId', 'Id');
}
}
和
采购详情型号:-
use Illuminate\Database\Eloquent\Model;
class Purchasedetail extends Model {
public function purchase() {
return $this->belongsTo('App\Models\Purchase', 'PurchaseId', 'Id');
}
}
如何创建、更新和删除具有关系的 table 数据? 我的主要问题是当我将数据发送到控制器并尝试创建时,创建了母版页数据但它无法创建父 table 数据或更新它。 我正在使用 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);
我在 return 中收到此错误:
ErrorException in helpers.php line 703: preg_replace(): Parameter mismatch, pattern is a string while replacement is an array. That means $purchase->save() can not possible. Here i get an array list from Input::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);
}