通常我可以弄清楚这一点,但是格式看起来与我习惯的有所不同。我有一个使用CodeIgnighter的php的Web服务。该函数如下所示:
function getCurrentSales($office_id)
{
$CI =& get_instance();
$CI->load->model("properties");
//Get the properties
$where = array('field_SaleOfficeCode'=>$office_id);
$where = array('field_ListOfficeCode'=>$office_id);
$result = $CI->properties->getCurrentSales($where);
$properties = $result->result_array();
foreach($properties as $p){
//Get property images
$where = array('ListingKey'=>$p['UniqueKey']);
$property_arr[] = $p;
}
return $property_arr;
}
$this->nusoap_server->service(file_get_contents("php://input"));
}
我想做的是返回
field_ListOfficeCode
或field_ListOfficeCode
的值为$office_id
的行。现在,仅当field_ListOfficeCode=>$office_id
时,而不是当一个或另一个等于该值时。型号方法代码:
function getCurrentSales($where = null) {
$this->db->select('field_ListingKey as UniqueKey,
field_LocaleListingStatus as Status,
field_CloseDate as ClosingDate,
field_ContractDate as ContractDate,
field_ListingID as MLS,
TRIM("#VARIES" from field_FullStreetAddress) as StreetAddress,
field_ListPrice as Price,
field_ListOfficeCode as BrokerID,
if(field_Beds != "", field_Beds, 0) as NumBeds,
if(field_BathsFull != "", field_BathsFull, 0) as NumFullBaths,
if(field_BathsHalf != "", field_BathsHalf, 0) as NumHalfBaths,
field_InternetRemarks as PropertyRemarks,
field_ListOfficeName as ListingOfficeName,
field_ListPicture3URL as MainPhoto,
CONCAT(field_ListAgentNickname, " ", field_ListAgentLastName, " ", (if(field_ListAgentNameSuffix = "NULL", field_ListAgentNameSuffix, ""))) as ListingAgent,
CONCAT(field_SaleAgentNickname, " ", field_SaleAgentLastName, " ", (if(field_SaleAgentNameSuffix = "NULL", field_SaleAgentNameSuffix, ""))) as SalesAgent,
CONCAT(field_City, ", ", field_State, " ", field_PostalCode) as AreaAddress', false);
$this->db->from('TABLE_2');
if($where != null){
$this->db->where($where, false);
$this->db->where('YEAR(field_ContractDate) = YEAR(NOW())', NULL, false);
$this->db->where('MONTH(field_ContractDate) = MONTH(NOW())', NULL, false);
}
$this->db->order_by('ContractDate', 'desc'); //get random row
//$this->db->limit($limit);
$query = $this->db->get();
return $query;
}
最佳答案
我不熟悉CodeIgniter,但我怀疑您的问题出在这两行
$where = array('field_SaleOfficeCode'=>$office_id);
$where = array('field_ListOfficeCode'=>$office_id);
您实际上不是在构建where子句的数组,而是将第一个分配替换为第二个分配,这说明了为什么只获得与
field_ListOfficeCode == $office_id
匹配的结果根据CodeIgniter期望这些where子句形成的方式,我认为它应该类似于
$where = array(
array('field_SaleOfficeCode'=>$office_id),
array('field_ListOfficeCode'=>$office_id)
)
或快速浏览the documentation
$where = array(
'field_SaleOfficeCode'=>$office_id,
'field_ListOfficeCode'=>$office_id
)
然后在您的
getCurrentSales
函数中,它应该是$this->db->or_where($where)