【发布时间】:2019-03-16 20:05:49
【问题描述】:
我想将两个相关模型(人员和电话号码)作为事务保存在两个单独的表中,这样如果人员插入失败,则不会存储电话号码。
我尝试了 DB 事务外观,但由于范围可变,模型对闭包不可用。
我收到错误消息:
未定义变量:newPerson
我尝试将它们作为参数添加到闭包中,但它也不起作用。
当我在 DB Transaction 之外执行两个保存操作时,它可以正常工作。
public function store(Request $request)
{
$newPerson = new Person;
$newPerson->name_en = 'New Guy';
$newPerson->salutation_id = '1';
$newPerson->gender = '1';
$newPerson->created_by = '1';
$phoneNumber = new PhoneNumber;
$phoneNumber->country_id = '1';
$phoneNumber->phone_number = '055512345';
$phoneNumber->phoneType_id = '5';
$phoneNumber->created_by = '5';
DB::transaction(function () {
$newPerson->save();
$this->$newPerson->phoneNumbers()->save($phoneNumber);
});
}
【问题讨论】: