РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
203 of 1392 menu

Метод updateExistingPivot

Метод updateExistingPivot применяется к экземпляру отношения BelongsToMany и позволяет обновить данные в промежуточной таблице для существующей связи между двумя моделями. Первым параметром передаётся идентификатор связанной модели, вторым - массив с данными для обновления в pivot-таблице. Метод возвращает true в случае успеха или false при неудаче.

Синтаксис

<?php $model->relation()->updateExistingPivot($relatedId, $attributes); ?>

Пример

Давайте обновим поле 'role' в промежуточной таблице для пользователя с идентификатором 1 в проекте с идентификатором 1:

<?php use AppModelsProject; use AppModelsUser; $project = Project::find(1); $user = User::find(1); $res = $project->users()->updateExistingPivot($user->id, ['role' => 'manager']); echo $res; ?>

Результат выполнения кода:

true

Пример

Давайте обновим несколько полей одновременно в промежуточной таблице для курса и студента:

<?php use AppModelsCourse; use AppModelsStudent; $course = Course::find(1); $student = Student::find(1); $res = $course->students()->updateExistingPivot($student->id, [ 'grade' => 5, 'status' => 'completed', 'feedback' => 'Excellent work' ]); echo $res; ?>

Результат выполнения кода:

true

Пример

Попробуем обновить запись, которая не существует в промежуточной таблице:

<?php use AppModelsPost; use AppModelsTag; $post = Post::find(1); $tag = Tag::find(99); $res = $post->tags()->updateExistingPivot($tag->id, ['order' => 1]); echo $res; ?>

Результат выполнения кода:

false

Пример

Обновим поле 'quantity' в промежуточной таблице для заказа и товара, используя Timestamp для отслеживания изменений:

<?php use AppModelsOrder; use AppModelsProduct; use CarbonCarbon; $order = Order::find(1); $product = Product::find(1); $res = $order->products()->updateExistingPivot($product->id, [ 'quantity' => 5, 'updated_at' => Carbon::now() ]); if ($res) { echo "Pivot updated successfully"; } else { echo "Pivot update failed"; } ?>

Результат выполнения кода:

"Pivot updated successfully"

Смотрите также

  • метод attach,
    который добавляет новую запись в промежуточную таблицу
  • метод detach,
    который удаляет запись из промежуточной таблицы
  • метод sync,
    который синхронизирует связи в промежуточной таблице
  • метод toggle,
    который переключает статус связи в промежуточной таблице
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить