我在使用两个mysql查询时遇到了冲突错误。我希望使用join语法从数据库中获取两个表,直到我将一个外部函数放入where子句中,该子句将从另一个模型返回一个ID。这使得查询中出现冲突。
这是我的第一个也是主要的模型函数:
function get_festival_data($options = array())
{
// Qualification
if(isset($options['festival_Id']))
$this->db->where('md_festivals.festival_Id', $options['festival_Id']);
if(isset($options['festival_Status']))
$this->db->where('festival_Status', $options['festival_Status']);
$this->db->where('lang_Id', currentLanguageID());
$this->db->from('md_festivals');
$this->db->join('md_festival_details', 'md_festival_details.festival_Id = md_festivals.festival_Id');
$query = $this->db->get();
if(isset($options['festival_Id']) return $query->row(0);
return $query->result();
}这是一个创建全局函数的助手:
function currentLanguageID()
{
$language = get_instance()->languages_model->get_language_data
(
array(
'lang_Abbr' => config('language_abbr')
)
);
return $language->lang_Id;
},它很好地返回ID
这是另一个模型函数:
function get_language_data($options = array())
{
// Qualification
if(isset($options['lang_Id']))
$this->db->where('lang_Id', $options['lang_Id']);
if(isset($options['lang_Abbr']))
$this->db->where('lang_Abbr', $options['lang_Abbr']);
$query = $this->db->get('md_languages');
if(isset($options['lang_Id']) || isset($options['lang_Abbr']))
return $query->row(0);
return $query->result();
}下面是我遇到的冲突和错误:
错误编号: 1054 'where子句‘中未知列'md_festivals.festival_Id’ 从
md_languages中选择*,其中md_festivals.festival_Id= '6‘和festival_Status=1和lang_Abbr= 'fa’ 文件名: D:/xampp/htdocs/aksineh/system/database/DB_driver.php 线路号码: 691
它把两个模型的其中的子句相互之间,并造成冲突!!
发布于 2018-02-11 09:28:47
这个问题通过改变where子句中的顺序而得到解决。我在函数的开头引入了$this->db->where('lang_Id', currentLanguageID()); where子句:
function get_festival_data($options = array())
{
// Qualification
$this->db->where('lang_Id', currentLanguageID());
if(isset($options['festival_Id']))
$this->db->where('md_festivals.festival_Id', $options['festival_Id']);
if(isset($options['festival_Status']))
$this->db->where('festival_Status', $options['festival_Status']);
$this->db->from('md_festivals');
$this->db->join('md_festival_details', 'md_festival_details.festival_Id = md_festivals.festival_Id');
$query = $this->db->get();
if(isset($options['festival_Id']) return $query->row(0);
return $query->result();
}https://stackoverflow.com/questions/48729806
复制相似问题