У меня есть несколько таблиц (все они с созданными, обновленными, удаленными):
- сектора
- lang_sector
- valuechains
- lang_valuechain
- 1012 * сегменты *
- lang_segment
- keyneeds
- keyneed_lang
таблицы связаны в следующем порядке:
сектора имеет много цепочек
цепочки создания стоимости имеют много сегментов
сегментов имеет много ключевых потребностей
Вот моя модель:
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Sector extends Model
{
use SoftDeletes;
protected $table = "sectors";
protected $fillable = ['admin_id'];
protected $dates = [ 'created_at', 'updated_at', 'deleted_at' ];
public function langs() {
return $this->belongsToMany('App\Lang')
->withPivot('sectname', 'sectshortname', 'segname_slug',
'sectdescription', 'sectshortdescription'
)
->withTimestamps();
}
public function admin()
{
return $this->belongsTo('App\Admin');
}
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);
$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() ] );
$sector->segments()->update( [ 'segments.deleted_at' => Carbon::now() ] );
$sector->keyneeds()->update( [ 'keyneeds.deleted_at' => Carbon::now() ] );
Sector::where('id', $id)->delete();
return redirect()->route('sectors.index')->with('success', 'Sector deleted');
}
Моя проблема заключается в том, что он не обновляет следующие таблицы: сегменты и ключевые потребности (в которых есть поля create_at, updated_at и dele_at) и их сводные таблицы ... И у меня есть сообщение об ошибке:
SQLSTATE [23000]: нарушение ограничения целостности: 1052 Поле: «updated_at» в списке полей неоднозначно (SQL: обновление segments
внутреннее объединение valuechains
в valuechains
. id
= segments
. valuechain_id
set segments
. deleted_at
= 2018-05-10 06:54:54, updated_at
= 2018-05-10 06:54:54 где valuechains
. sector_id
= 2)
добавляет: updated_at
Я успешно обновил:
- таблица секторов
- таблица значений
- lang_valuechain pivot
Моя проблема заключается в обновлении
- сегментирует таблицу, используя: $ sector-> сегменты ()
- таблица ключевых значений с помощью: $ sector-> keyneeds ()
И их сводная таблица ... Я читаю документацию, но это не помогает.
Я использую метод update (), потому что $ sector-> сегменты () -> удаление () пытается выполнить полное удаление ...