我制作了一个上传表格,将多张图片上传到服务器。我还在我的模型中创建了一个函数来将文件名添加到数据库中,这一切都很有效。我想将所有图像分配给一个商品(我的数据库中的表)
我正在使用表连接向特定公司添加多个商品(我的数据库中的表)
因此,一家公司可以提供更多优惠,但优惠必须不止一个。
翻译: Aanbieding意味着提供, Bedrijven意味着公司, foto表示图片
当前案例:创建了3个优惠。因此,对于每个图像,都会创建一个商品,但是使用相同的信息,唯一的区别就是图片ID。
我加入公司,优惠和图片的表格如下:
bedrijfaanbiedingen
-------------------
idbedrijfaanbiedingen
idbedrijven
idaanbiedingen
idfotoaanbiedingen
idaanbiedingcat
正如您所看到的,可以让一家公司拥有多个优惠和多个图片。
我添加优惠的模型如下:
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家公司提供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
答案 0 :(得分:0)
嗯,它并不完全清楚你想要什么(对不起)所以如果我解释错误的话,请原谅我。我认为您要做的是在数据库中实现一对多关系。如果图像数量是任意的,最好使用链接表 我在下面描述的系统将允许您将有效数量的图像链接到公司,公司提供和提供给公司。
我不确定你的桌子是如何构建的所以我会做些什么:
公司(company_id,company_name) 图片(image_id,image_url) 优惠(offer_id,offer_details) Company_offer(company_offer_id,company_id,offer_id) Image_offer(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 criteria to here} //注意这个sql是未经测试的。
这里幸福的关键是数据库设计。如果将每个表中存储的数据保持在最低限度(理想情况下表中的非id数据应该在其他地方重复),则可以轻松实现一对多关系。如果您想了解更多信息,请查看第4个Normal Form。它确实会产生大量的小桌子,偶尔会有一些粗糙的连接,但结果通常是一个更容易导航的系统,而且存储成本更低。