Попробуйте позвонить getSaleOrderFormInfoDetail
дважды.
Первый раз с условием и второй раз без условия
function getSaleOrderFormInfoDetail($saleOrderId = '')
{
$this->db->_protect_identifiers=false;
$this->db->select('BaseTbl.itemId, count(CASE WHEN SaleOrder.orderDate >= DATE_ADD(curdate(), INTERVAL -6 MONTH) AND SaleOrder.orderDate <= curdate() THEN SaleOrder.orderDate ELSE NULL END) as totalOrderLast6Month');
$this->db->from('tbl_saleorderdetail as BaseTbl');
$this->db->join('tbl_saleorders as SaleOrder', 'SaleOrder.saleOrderId = BaseTbl.masterId','left');
if(!empty($saleOrderId)){
$this->db->where('BaseTbl.masterId', $saleOrderId);
}
$this->db->order_by("BaseTbl.id", "asc");
$query = $this->db->get();
return $query->result();
}
Теперь сделайте вот так
$counter = count($this->model_name->getSaleOrderFormInfoDetail());
Этобудет считать строки
$data = $this->model_name->getSaleOrderFormInfoDetail($saleOrderId);
Это даст вам данные с условием