我创建了一个模型nammed部门。对于这个模型,我创建了在数据库表之间建立链接的方法:
它已被翻译成这样:
public function valuechains()
{
return $this->hasMany('App\Valuechain');
}
public function segments()
{
return $this->hasManyThrough('App\Segment', 'App\Valuechain');
}
public function keyneeds()
{
return $this->hasManyThrough('App\Keyneed', 'App\Segment', 'App\Valuechain');
}
当我软删除一个扇区时,我想在其他表上创建一个级联并进行更新。
我的破坏方法是:
public function destroy($id)
{
$sector = Sector::findOrFail($id);
// on update lang_sector pour chaque id
$sector_ids = $sector->langs()->allRelatedIds();
foreach ($sector_ids as $id){
$sector->langs()->updateExistingPivot($id, ['lang_sector.deleted_at' => Carbon::now()]);
}
$sector->valuechains()->update(
[
'valuechains.deleted_at' => Carbon::now(),
'valuechains.updated_at' => Carbon::now(),
]
);
$sector->segments()->update(
[
'segments.deleted_at' => Carbon::now(),
'segments.updated_at' => Carbon::now(),
]
);
$sector->keyneeds()->update(
[
'keyneeds.deleted_at' => Carbon::now(),
'keyneeds.updated_at' => Carbon::now()
]
);
Sector::where('id', $id)->delete();
return redirect()->route('sectors.index')->with('success', 'Sector deleted');
}
我有价值链,细分和关键字的数据透视表,我还想更新这些表格中的updated_at和deleted_at列...
对于这3个表,我在模型中添加了lang方法,用于定义数据透视关系并定义数据透视表中的字段:
public function langs() {
return $this->belongsToMany('App\Lang')
->withPivot(
'vcname',
'vcshortname',
'vcdescription',
'vcshortdescription',
'created_at',
'updated_at',
'deleted_at'
);
}
我有一条错误消息:
SQLSTATE [23000]:完整性约束违规:1052冠军:'updated_at'dans字段列表est ambigu(SQL {更新segments
内部加入valuechains
valuechains
。{{1} } = id
。segments
设置valuechain_id
。valuechains
= 2018-05-09 07:34:30,deleted_at
。valuechains
= 2018 -05-09 07:34:30,updated_at
。segments
= 2018-05-09 07:34:30,deleted_at
。segments
= 2018-05-09 07:34:30,updated_at
= 2018-05-09 07:34:30其中**updated_at**
。valuechains
= 2)