Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我可以阻止一个表的更新吗?_Php_Laravel - Fatal编程技术网

Php 我可以阻止一个表的更新吗?

Php 我可以阻止一个表的更新吗?,php,laravel,Php,Laravel,我的数据库中有两个表,一个是从业者,另一个是从业者专业,它们都有生效日期和到期日期字段。当我使用表单更新这两个表时,最后一个生效日期和到期日期被保存到两个表中,而不是两个单独的表中。 有没有办法阻止一个表的更新,这样我就可以只更新第二个表,或者有没有办法使用不同的id/名称保存它,这样它们将是从业者和从业者专业的唯一表 这是我用来更新表的表单和控制器 控制器: 公共函数更新激活器(请求$Request,$id) { $this->validate$请求[ “生效日期”=>“必需”, ] ); $

我的数据库中有两个表,一个是
从业者
,另一个是
从业者专业
,它们都有
生效日期
到期日期
字段。当我使用表单更新这两个表时,最后一个
生效日期
到期日期
被保存到两个表中,而不是两个单独的表中。 有没有办法阻止一个表的更新,这样我就可以只更新第二个表,或者有没有办法使用不同的id/名称保存它,这样它们将是
从业者
从业者专业
的唯一表

这是我用来更新表的表单和控制器

控制器:

公共函数更新激活器(请求$Request,$id)
{
$this->validate$请求[
“生效日期”=>“必需”,
]
);
$fields=$request->all();
$primary_key=$this->PractitionerRepository->getIdName();
$primary\u key\u speciality=$this->PractitionerSpecialtyRepository->getIdName();
$practicer\u speciality\u id=practicerspecialty::where('practicer\u id',$id)->value('practicer\u speciality\u id');
$fields[$primary_key]=$id;
$this->PractitionerRepository->update($fields);
$fields[$primary\u key\u speciality]=$practices\u speciality\u id;
$this->practicesperspecialtyrepository->update($fields);
return back()->带有('successUpdate','practices has update!');
}
在blade.php中更新表单:


{{csrf_field()}}
从业人员信息
{{trans('personalData.effectiveDate')}
{{trans('personalData.expiryDate')}
{{trans('personalData.phoneNumber')}
{{trans('personalData.mobileNumber')}
{{trans('personalData.email')}
{{trans('settings.speciality')}
@foreach($specialties作为$specialtive)
{{$speciality->name}
@endforeach
{{trans('personalData.effectiveDate')}
@isset($从业者专业->从业者专业id)
@尾端集
@空($practices\u speciality->practices\u speciality\u id)
@可爱的
{{trans('personalData.expiryDate')}
@isset($从业者专业->从业者专业id)
@尾端集
@空($practices\u speciality->practices\u speciality\u id)
@可爱的
保存更改
取消

两个表使用相同的数组,因此需要更新所有字段。您可以尝试为一个表单排除这些表单,然后将它们添加到另一个表单,例如:

$practictionerFields = $request->except('expiry_date', 'effective_date');
$practictionerFields[$primary_key] = $id;
$this->PractitionerRepository->update($practictionerFields);

// and use the other $fields array for the PractitionerSpecialty model.

您可以在这里使用锁查询。 锁是与表关联的标志。MySQL允许客户端会话显式获取表锁,以防止其他会话在特定时间段访问同一个表。客户端会话只能为自己获取或释放表锁。它无法获取或释放其他会话的表锁


您可以在此处阅读更多内容:

但如果我排除“到期日”和“生效日”,它将从表单中排除所有4个值,不是吗?哪4个值?它将仅排除这两个项,并返回所有其他项。您要求阻止字段更新,但在您现在进行注释时,希望两个表使用不同的字段值。所以你需要重新措辞你的问题。。按照我上面的评论,您需要使用不同的表单或不同的名称属性,否则每次都会覆盖这些值。是的,您可以使用
$practictionerFields['effective_date']=$request->get('effective_date_speciality')作为一个例子,对另一个字段也做同样的操作。是的,非常感谢,它做得有点类似,而且很有效。