2015-08-19 1 views
0

У меня есть 2 таблицы связаны друг с другом так:Laravel 5 - Обновление данных в 2 связанных таблиц

goals 
| goalId | title | 

frequencies 
| freqId | goalId | 

Я хочу, чтобы обновить свои таблицы с помощью Laravel. Я провел некоторое исследование в Интернете, но они просто представляют, как обновлять информацию только по 1 таблице. Я пытался использовать Query Builder, однако он не работает. Вот мой запрос:

DB::table('goals') 
    ->where('goals.goalId', '=', $goaldata['goalid']) 
    ->where('goals.goalId', '=', 'frequencies.goalId') 
    ->update([ 
    // my query 
]); 

Это мое заявление полностью, если вы хотите посмотреть в моем вопросе более подробно: http://pastebin.com/CmbReqGq
Как я могу обновить данные в 2 таблицы?
Спасибо.

ответ

0

Если вы используете миграции, вы можете использовать onUpdate('cascade'), который будет обновлять одно поле при обновлении родительской таблицы.

В качестве альтернативы, если вы хотите обновить большое количество полей, вы можете использовать триггер mysql, который будет срабатывать при ударе по событию. как так:

DB::unprepared(" 
      CREATE TRIGGER new_your_trigger AFTER UPDATE ON goals FOR EACH ROW 
      BEGIN 

      UPDATE frequencies SET id = NEW.id ; 

      END 
     "); 
+0

Спасибо за вашу помощь, однако, SQL триггер, кажется, Мне трудно понять и использовать. И я также решаю свою проблему выше, используя «DB :: raw» для записи необработанного SQL-запроса в Laravel – BraveVN

0

это намного проще

$data = ['id' => 1,'name' =>'John']; 
$query = Model::update($data); 
// to get the update row id 
return $query -> id; 

использовать возвратный идентификатор для вставки или обновление данных в связанных таблицах

Смежные вопросы