有4个表
option_group (id、optionGroupName)
category_optiongroup(categoryId, optionGroupId, inOrder)
product_option(productId, optionGroupId, optionId)
选项(id、用optionValue)
一些产品还没有在product_option表中插入其optionValue,但我想获得主题所有是否插入。例如,具体产品的尺寸尚未确定。
这是我的模型,但它只返回所有的optionValue设置。
是否有可能使用IFNULL()?如果不是也没关系
IFNULL(optionValue, 'Not Set')
$this->db->select('option.optionValue')
->from('category_optiongroup')
->where('categoryId', $data['categoryId'])
->join('product_option', 'product_option.productId='.$productId.
' AND product_option.optionGroupId=category_optiongroup.optionGroupId', 'left')
->join('option', 'option.id=product_option.optionId')
->order_by('category_optiongroup.inOrder', 'ASC');
$query = $this->db->get();
return $query;
两招:
第一个:bothoption和product_option表需要左连接
第二:当然IFNULL()需要一个别名来调用
$this->db->select('IFNULL(`option`.`optionValue`, "Not Set") AS optionValue', FALSE)
->from('category_optiongroup')
->join('product_option', 'product_option.productId='.$productId
.' AND product_option.optionGroupId=category_optiongroup.optionGroupId', 'left')
->join('option', 'option.id=product_option.optionId', 'left')
->where('categoryId', $data['categoryId'])
->order_by('category_optiongroup.inOrder', 'ASC');
$query = $this->db->get();
return $query;
你可以像这样使用IFNULL
$this->db->select('IFNULL(`option`.optionValue,"Not Set")',false)
->from('category_optiongroup')
->join('product_option', 'product_option.productId='.$productId.
' AND product_option.optionGroupId = category_optiongroup.optionGroupId', 'left')
->join('`option`', '`option`.id=product_option.optionId')
->where('categoryId', $data['categoryId'])
->order_by('category_optiongroup.inOrder', 'ASC');
$query = $this->db->get();
return $query;