Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 11.09.2015 09:18:03

Обновление pivot таблицы

Подскажите, как обновить дополнительные данные в pivot таблице и есть ли возможности их синхронизации?
Есть таблица posts и есть таблица properties, связь ManyToMany, в pivot таблице есть еще колонка value
В модели Post:

    public function properties()
    {
        return $this->belongsToMany('App\Property')->withPivot('value');
    }

Пробую обновить так

$post->properties()->updateExistingPivot($post_id, [
            'property_id' => $property_id,
            'value' => $value
        ]);

где $post_id - id поста,
$property_id - id свойства property
$value - значение свойства

Ошибок никаких нет, но и обновления не происходит. Понятно что можно вручную sql запросом обновить, но должен же быть способ обойтись и без него в Laravel 5.16

Не в сети

#2 11.09.2015 10:30:08

Re: Обновление pivot таблицы

Может кому пригодится, сделал так:
В модели Post добавил метод:

    public function updateProps(array $properties)
    {
        foreach ($properties as $property_id=>$value) {
            \DB::table('post_property')
                ->where('post_id', $this->id)
                ->where('property_id', $property_id)
                ->update(['value' => $value]);
        }

    }

В контроллере PostsController вызов такой:

$post->updateProps([$property_id=>$value]);

Не в сети

Подвал раздела