2014-02-13 28 views
3

我有這樣的代碼要一次刪除多個表中的數據:Laravel:如何用同一個ID從多個表中刪除只有一個查詢的行?

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這從guardianschool表是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''監護人'和'學校'記錄的記錄也被刪除。這個問題實際上已經解決了,見上面的評論,謝謝你的時間。 – user2002495

相關問題