我有以下代码,到目前为止一直运作良好:
$db->table = "horse_products as p";
$db->colums = "p.*, l.address as address, l.storename as supplier_name, c.title as cat_title, c.id_parent as id_parent";
$db->join = "LEFT JOIN locations as l ON l.id = p.id_location"
." LEFT JOIN categories as c ON c.id = p.id_category WHERE c.id_parent = 8";
$db->orderBy = "p.id_location ASC, p.id_product ASC";
$items = $db->Select();
以前p.id_category
是一个整数,因为“类别”表中只允许一个类别与产品相关联。但是今天我决定让p.id_category
以逗号分隔的数组。这样做的缺点是当我尝试回显$item['cat_title']
时,我只得到c.title
数组中的第一个p.id_category
。我想获得p.id_category
中所有类别的标题。有人能帮我一下吗?我希望自己能够理解,作为MySQL的新手,即使让我的LEFT JOIN工作也是一个挑战: - )
修改
今天早上坐下来寻找解决方案并在以下问题的答案中找到答案:MySQL: How to fetch data with left-join if column contains multiple ids?。感谢所有帮助。
答案 0 :(得分:1)
错误的想法因为id_category应该是唯一的整数值。如果您想要m:n关系,则需要添加另一个表,其中至少有两个主要外键来自您希望拥有关系的表。因此,在您的情况下,您将创建具有主键id_product和id_category的表title_to_categories。 Id_product将等于p.id,id_category等于c.id.
答案 1 :(得分:0)
尝试:
$items= $db->fetchAll();
然后和foreach一起去。