2014-02-13 2 views
3

У меня есть этот код, чтобы удалить данные из нескольких таблиц в одном дыхании:Laravel: Как удалить строки из нескольких таблиц с тем же идентификатором только с одним запросом?

DB::table('tb_stikes_register_school')->where('register_id', $_POST['id'])->delete(); 
      DB::table('tb_stikes_register_guardian')->where('register_id', $_POST['id'])->delete(); 
      DB::table('tb_stikes_register_student')->where('register_id', $_POST['id'])->delete(); 

Я пытаюсь сократить это в 1 запрос только, register_id из guardian и school таблиц внешнего ключ student таблицы. Я пытаюсь использовать соединение, но только запись student удаляется. Есть ли обходное решение?

+0

Вы пытаетесь удалить это, когда вы удаляете ученика? –

+0

Нет, таблица 'register_student' является независимой (у нее нет модели). Роль этой таблицы заключается только в том, чтобы хранить регистрационные данные, данные пользователями (которые я разделил на три, register_student, register_guardian, register_school) и не имеет ничего общего с реальными данными и/или моделью студента. – user2002495

+0

«только запись таблицы студента удалена», о которой я упоминал в вопросе, относится к 'tb_stikes_register_student' – user2002495

ответ

2

Что-то вроде этого, может быть, - не тестировал

DB::table(DB::raw('FROM tb_stikes_register_school, tb_stikes_register_guardian, tb_stikes_register_student')) 
->join(ENTER JOIN INFO) // wasn't clear how your tables were related 
->where('register_id', $_POST['id']) 
->delete(); 

Или вы могли бы использовать полностью необработанный запрос:

DB::query('SQL statement here'); 

В основном воссоздании что-то похожее на это: delete rows from multiple tables

+0

Именно так я и сделал это в первый раз, когда ученик «register_id» присоединился к «register_id» школы и опекуна и посмотрел, где «register_id» ученика совпадает с «$ _POST ['id']'. Но с помощью этого метода удаляются только записи из 'tb_stikes_register_student'. Я хочу, чтобы запись с такими же регистрами 'register_id'' 'guardian' и' school' также удалялась. Этот вопрос на самом деле был решен, см. Выше комментарии, спасибо за ваше время. – user2002495

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