编码器中的多个连接未按预期工作



有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;

两招:

第一个:bothoptionproduct_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;

相关内容

  • 没有找到相关文章

最新更新