Подтвердить что ты не робот

Laravel4 обновляет дополнительные столбцы в сводной таблице

Я пытаюсь обновить дополнительные данные столбца в сводной таблице во многих отношениях.

У меня есть две таблицы - резервирование и ресурс, связанный с сводной таблицей. Я могу приложить и работать с моделью. Однако я пытаюсь обновить один из дополнительных столбцов в сводной таблице.

У меня есть объект: '$ reserve' Из этого объекта я создал другой объект $resources, используя:

$resources = $reservation->resource()->get();

Затем я повторяю через $resources с помощью цикла foreach следующим образом

foreach($resources as $resource ) {...}

Затем я хочу обновить столбец с именем gcal_id и использую следующее:

$resource->pivot->gcal_id = "TEST";
$resource->save();

Если я var_dump модель, я вижу, что свойство существует с правильным значением, но в самой базе данных запись не обновляется, поэтому сохранение не работает

У меня есть столбцы, перечисленные в обеих сторонах отношения с этим:

->withPivot('start', 'end', 'quantity', 'product_id','gcal_id')

Учитывая, что у меня есть объект ресурса, как я могу правильно обновить столбец в сводной таблице и сохранить в базе данных?

Спасибо

4b9b3361

Ответ 1

После этого вы устанавливаете атрибут на сводке:

$resource->pivot->gcal_id = "TEST";

Кажется, вы сохранили ресурс, а не точку опоры:

$resource->save();

Если вы хотите, чтобы стержень был сохранен, сохранение ресурса недостаточно. Вместо этого выполните вызов на своде:

$resource->pivot->gcal_id = "TEST";
$resource->pivot->save();

Ответ 2

Альтернативой вместо метода save является метод Illuminate\Database\Eloquent\Relations\BelongsToMany\updateExistingPivot()

$reservation->resource()->updateExistingPivot($resource_id, ['gcal_id' => 'TEST']);

Или

$reservation->resource()->updateExistingPivot([1, 4, 5, 6], ['gcal_id' => 'TEST']);

Эта работа для меня в Laravel 4.2