2013-06-19 41 views
1

我有一個從公司添加aanbiedingen(提供)的表單。我用這三個表:如何在網址中沒有id的情況下刪除一行?

Aanbiedingen 
- - - - - - - 
idaanbiedingen //id 
Aanbieding //offername 
Omschrijving //description 
Prijs //price 
Conditie //condition 

Bedrijfaanbiedingen 
- - - - - - - - - - 
idbedrijfaanbiedingen //id 
idaanbiedingen // offers id 
idbedrijven // company id 
idfotoaanbiedingen // photo id 

fotoaanbiedingen 
- - - - - - - - - 
idfotoaanbiedingen //id 
fotonaam // photo name (this is the file_name) 

我能夠從表中刪除數據:半價和Bedrijfaanbiedingen。我使用網址中的ID來刪除它們。我使用兩個表中的idaanbiedingen來刪除數據。

問題

如何刪除從fotoaanbiedingen的數據,而不必在該表中的idaanbiedingen? 我不知道該怎麼做。這看起來幾乎不可能。我想過在bedrijfaanbiedingen的idfotoaanbiedingen加入工作,但我不知道該怎麼做。

我的模型看起來是這樣的:

function deleteaanbieding($id) 
{ 
    $this->db->where('idaanbiedingen', $id); 
    $this->db->delete('bedrijfaanbiedingen'); 
    $this->db->where('idaanbiedingen', $id); 
    $this->db->delete('Aanbiedingen'); 
    redirect('members/aanbiedingen'); 
} 

的$ id字段是:$id = $this->uri->segment(3);

我怎樣才能增加從fotoaanbiedingen刪除的功能?

+0

通常情況下,你可以做一個刪除連接SQL查詢,但我不t認爲這由Codeigniters活動記錄支持。你可能不得不使用'$ this-> db-> query()'; – Jeemusu

+0

如果你沒有進行軟刪除(在db中設置刪除標誌),你也可以在mysql中的表之間創建一個級聯刪除關係,並依靠它來刪除你的記錄。假設這是一對多的關係。 – Jeemusu

+0

你們中的一個人能否提供一個使用SQL的例子? –

回答

0

在一個標準的MySQL查詢它會是這個樣子。

delete Aanbiedingen,Bedrijfaanbiedingen,fotoaanbiedingen 
from Bedrijfaanbiedingen 
inner join Aanbiedingen ON Aanbiedingen.idaanbiedingen = Bedrijfaanbiedingen.idaanbiedingen 
inner join fotoaanbiedingen ON fotoaanbiedingen.idfotoaanbiedingen = Bedrijfaanbiedingen.idfotoaanbiedingen 
where Bedrijfaanbiedingen.idaanbiedingen= {the id} 

請嘗試一下代碼,注意這段代碼沒有經過測試。你可以將它轉換爲活動記錄,如果你想,基本上表Bedrijfaanbiedingen與表fotoaanbiedingen有一些共同點,那就是idfotoaanbiedingen,你只需要加入它們。

+0

會試試這個。感謝:D –

+0

這工作就像一個魅力。謝謝!。我用$ id更改了{id},它工作正常。 :D –

+1

沒有probs高興地幫助@KeesSonnema – tomexsans

0

如果您沒有ID字段,則可以在您的情況下儘可能使用其他字段進行刪除。

檢查它是否適合你:

$this->db->join('fotoaanbiedingen', 'fotoaanbiedingen.idfotoaanbiedingen = Bedrijfaanbiedingen.idfotoaanbiedingen'); 
+0

不,我不能。如果你看看前兩張表。他們有idaanbiedingen。但第三張桌子沒有。那我怎麼能刪除它?我想用'bedrijfaanbiedingen'的連接? –

+0

是的,你有共同的領域作爲「idfotoaanbiedingen」。 – skparwal

+0

那麼如何使用它來刪除數據呢? –

0

首先,我認爲,這將讓您的生活更輕鬆Bedrijfaanbiedingen和fotoaanbiedingen在另一側有聯繫(fotoaanbiedingen將有一個外鍵:idbedrijfaanbiedingen)

對於您的問題,您應該考慮使用where_in()的ActiveRecord功能(請參閱doc,activerecord部分)。你必須有一個idfotoaanbiedingen陣列。

舉例來說,如果你有一個idbedrijfaanbiedingen你應該嘗試像(下面的代碼是在你的方法的開始):

$this->db->select('idfotoaanbiedingen'); 
$this->db->from('Bedrijfaanbiedingen'); 
$this->db->where('idbedrijfaanbiedingen',$yourId); 
$query = $this->db->get(); //getting the photo id out of the Bedrijfaanbiedingen table 

//not sure about the result array, you should treat it better before entering it in argument of this method 
$this->db->where_in('idfotoaanbiedingen',$query->result_array()); 
$this->db->delete('fotoaanbiedingen'); 
+0

修復它已經與純SQL。但無論如何感謝。 –

相關問題