如何在没有url中的id的情况下删除行?

时间:2013-06-19 07:28:03

标签: php mysql forms codeigniter delete-row

我有一张表格可以从公司添加aanbiedingen(商品)。我为此使用了三个表:

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)

我可以删除表格中的数据:Aanbiedingen和Bedrijfaanbiedingen。我使用url中的id删除它们。我在两个表中使用idaanbiedingen来删除数据。

问题

如果没有表中的idaanbiedingen,如何从fotoaanbiedingen删除数据? 我不明白该怎么做。看起来几乎不可能。我想过在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删除的功能?

3 个答案:

答案 0 :(得分:0)

如果您没有ID字段,则可以在可能的情况下使用其他字段删除。

检查它是否适合您:

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

答案 1 :(得分: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,您只需要加入它们。

答案 2 :(得分: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');