Php Laravel-作为事务存储在两个表中
我想将两个相关模型(person和phone number)作为事务保存在两个单独的表中,以便在person insert失败时不会存储电话号码 我尝试了DB事务facade,但由于作用域可变,闭包无法使用这些模型 我收到错误消息: 未定义变量:newPerson 我尝试将它们作为参数添加到闭包中,但它也不起作用 在DB事务之外执行两个保存操作时,它工作正常Php Laravel-作为事务存储在两个表中,php,laravel-5,eloquent,Php,Laravel 5,Eloquent,我想将两个相关模型(person和phone number)作为事务保存在两个单独的表中,以便在person insert失败时不会存储电话号码 我尝试了DB事务facade,但由于作用域可变,闭包无法使用这些模型 我收到错误消息: 未定义变量:newPerson 我尝试将它们作为参数添加到闭包中,但它也不起作用 在DB事务之外执行两个保存操作时,它工作正常 public function store(Request $request) { $newPerson = new
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);
});
}
答案是使用“use”关键字
DB::transaction(function () use ($newPerson, $phoneNumber ) {
$newPerson->save();
$newPerson->phoneNumbers()->save($phoneNumber);
});
答案是使用“use”关键字
DB::transaction(function () use ($newPerson, $phoneNumber ) {
$newPerson->save();
$newPerson->phoneNumbers()->save($phoneNumber);
});