使用laravel和Eloquent

时间:2018-05-09 08:16:37

标签: eloquent laravel-5.5

我创建了一个模型nammed部门。对于这个模型,我创建了在数据库表之间建立链接的方法:

  • 一个部门有许多价值链,有许多细分市场,有很多细分市场 keyneeds
  • 价值链有很多段
  • 一个细分受众群有许多关键需求......

它已被翻译成这样:

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} } = idsegments设置valuechain_idvaluechains = 2018-05-09 07:34:30,deleted_atvaluechains = 2018 -05-09 07:34:30,updated_atsegments = 2018-05-09 07:34:30,deleted_atsegments = 2018-05-09 07:34:30,updated_at = 2018-05-09 07:34:30其中**updated_at**valuechains = 2)

0 个答案:

没有答案