1

我制作了一个上传表单以将多个图像上传到服务器。我还在我的模型中创建了一个函数来将文件名添加到数据库中,这一切都很好。我想将所有图像分配给一个报价(我的数据库中的表)

我正在使用表连接向特定公司添加多个报价(我的数据库中的表)

所以 1 家公司可以有更多的报价,但报价必须不止一个图像。

翻译:Aanbieding 意思是 Offer,Bedrijven 意思是公司,foto 意思是形象

当前案例:创建了 3 个报价。因此,对于每张图片,都会创建一个报价,但使用相同的信息,唯一的区别是图片 ID。

我的加入公司、优惠和图像的表格如下所示:

bedrijfaanbiedingen
-------------------
idbedrijfaanbiedingen
idbedrijven
idaanbiedingen
idfotoaanbiedingen
idaanbiedingcat

如您所见,可能有 1 家公司提供多个报价和多个图像。

我添加报价的模型如下所示:

public function addaanbieding($image_data = array())
{
    $data1 = array(
        'Aanbieding' => $this->input->post('aanbiedingnaam'),
        'Tekst' => $this->input->post('aanbiedingomschrijving'),
        'Prijs' => $this->input->post('aanbiedingprijs'),
        'Conditie' => $this->input->post('aanbiedingconditie'),
        'prijssoort' => $this->input->post('prijsopties'),
    );      
    $this->db->insert('Aanbiedingen', $data1);

    $aanbiedingid = $this->db->insert_id();
    $catid = $this->input->post('categorie');

    if($this->db->affected_rows() >= 1) 
    { 
        $to_bedrijfaanbiedingen['idaanbiedingen'] = $this->db->insert_id();
        $to_bedrijfaanbiedingen['idbedrijven'] = $this->session->userdata('idbedrijven');
        $to_bedrijfaanbiedingen['idaanbiedingcat'] = $catid;
        $insert_data = array(
            'fotonaam' => $image_data['file_name']
        );
        $input = $this->input->post('userfile');
        if(isset($input)){
            $this->db->insert('fotoaanbiedingen', $insert_data);
        }else{
            return FALSE;
        }
        $fotoid = $this->db->insert_id();

        $to_bedrijfaanbiedingen['idbedrijven'] = $this->session->userdata('idbedrijven');
        $to_bedrijfaanbiedingen['idaanbiedingen'] = $aanbiedingid;
        $to_bedrijfaanbiedingen['idfotoaanbiedingen'] = $fotoid;

        $this->insert_bedrijfaanb2($to_bedrijfaanbiedingen);
    }; 
}

public function insert_bedrijfaanb2($data) 
{ 
    $this->db->insert('bedrijfaanbiedingen', $data); 
    return $this->db->affected_rows() >= 1 ? TRUE : FALSE; 
}

我希望很清楚我想要什么。

我想要 1 家公司的 1 份报价,其中包含 2 张或更多图片。

编辑:

我的整个表结构:

bedrijven (companies)
---------
idbedrijven
bedrijfsnaam
profiel
plaats
telefoonnummer
etc...

Aanbiedingen (offers)
------------
idaanbiedingen
Aanbieding
prijs
conditie
etc..

bedrijfaanbiedingen (companyoffers)
-------------------
idbedrijfaanbiedingen
idbedrijven
idaanbiedingen
idfotoaanbiedingen
idaanbiedingcat

fotoaanbiedingen
---------------
idfotoaanbiedingen
file_name
4

1 回答 1

0

好吧,你想要什么并不完全清楚(对不起),所以如果我解释错了,请原谅我。我认为您正在尝试做的是在您的数据库中实现一对多的关系。如果图像的数量是任意的,最好使用链接表来完成。
我在下面描述的系统将允许您将无限数量的图像链接到报价、公司到报价和公司报价。

我不确定您的表格是如何构建的,所以我会弥补一些:

公司 (company_id,company_name) 图片 (image_id,image_url) 报价 (offer_id,offer_details) 公司报价 (company_offer_id,company_id,offer_id) 图片报价 (image_offer_id,image_id,offer_id)

Image_company (image_company_id,image_id,company_id) //如果您希望将图像链接到公司而不提供报价,则可选。

报价已创建。您使用 company_offer 将公司链接到报价,并使用 image_offer 将图像链接到报价。

该 sql 将沿着以下行:

SELECT company_name,image_url, {others} FROM Company LEFT JOIN Company_offer ON Company.company_id=Company_offer.company_id LEFT JOIN Image_offer ON Company_offer.offer_id=Image_offer.offer_id LEFT JOIN Image ON Image_offer.image_id = Image.image_id WHERE {where criteria go here} //注意这个sql是未经测试的。

这里幸福的关键是数据库设计。如果您将存储在每个表中的数据保持在最低限度,则可以轻松实现一对多关系(理想情况下,表中的非 id 数据不应在其他地方重复)如果您想了解更多信息,请查看第 4 范式。它确实会产生很多小表,偶尔也会产生一些粗糙的连接,但结果通常是一个更容易导航的系统,并且存储成本更低。

于 2013-07-25T10:34:13.870 回答