多个加入 codeigniter 未按预期工作
multiple join in codeigniter not working as expected
有 4 个table
option_group(id, optionGroupName)
category_optiongroup(categoryId, optionGroupId, inOrder)
product_option(productId, optionGroupId, optionId)
选项(id,optionValue)
一些产品还没有在 product_option table 中插入它的 optionValue 但我想获取主题所有是否插入。
例如具体产品的尺寸还没有设置。
这是我的模型,但它只 return 设置了所有选项值。
有没有可能用 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;
你可以像这样使用 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;
两个提示:
第一个:选项和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;
有 4 个table
option_group(id, optionGroupName)
category_optiongroup(categoryId, optionGroupId, inOrder)
product_option(productId, optionGroupId, optionId)
选项(id,optionValue)
一些产品还没有在 product_option table 中插入它的 optionValue 但我想获取主题所有是否插入。 例如具体产品的尺寸还没有设置。
这是我的模型,但它只 return 设置了所有选项值。
有没有可能用 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;
你可以像这样使用 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;
两个提示:
第一个:选项和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;