Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ORDER BY after LEFT JOIN不在浏览器中工作,但在SQL中工作_Php_Mysql_Codeigniter_Doctrine_Left Join - Fatal编程技术网

Php ORDER BY after LEFT JOIN不在浏览器中工作,但在SQL中工作

Php ORDER BY after LEFT JOIN不在浏览器中工作,但在SQL中工作,php,mysql,codeigniter,doctrine,left-join,Php,Mysql,Codeigniter,Doctrine,Left Join,我在这里读了几个问题和答案,但我似乎找不到一个合适的解决方案来解决我的问题 我会尽量说清楚: 首先,我在phpmyadmin中测试了我的SQL查询,它按照我的要求工作: SELECT s. * FROM PERSONNE_UDS p, ETUDIANT e, ENTREPRISE ent, STAGE s LEFT JOIN PERSONNE_UDS pt ON s.tuteur = pt.id_ens WHERE p.id_etudiant = s.id_etudiant AND s.id_e

我在这里读了几个问题和答案,但我似乎找不到一个合适的解决方案来解决我的问题

我会尽量说清楚:

首先,我在phpmyadmin中测试了我的SQL查询,它按照我的要求工作:

SELECT s. *
FROM PERSONNE_UDS p, ETUDIANT e, ENTREPRISE ent, STAGE s
LEFT JOIN PERSONNE_UDS pt ON s.tuteur = pt.id_ens
WHERE p.id_etudiant = s.id_etudiant
AND s.id_etudiant = e.id_etudiant
AND ent.id_entreprise = s.id_entreprise
AND p.code_dept =4
AND s.code_per_cal = '2016s2'
AND s.id_formation = 'SC40'
AND s.id_up =2
我补充说:

ORDER BY pt.nom ;  
在我的模型课上,我将其转化为:

$q = $this
->createQuery()
->select('s.*')
->from('Stage s')
->addFrom('PersonneUds p')
->addFrom('Etudiant e')
->addFrom('Entreprise ent') 
->leftJoin('PersonneUds pt ON s.tuteur = pt.id_ens')
->where('p.id_etudiant = s.id_etudiant')
->addWhere('s.id_etudiant = e.id_etudiant')
->addWhere('ent.id_entreprise = s.id_entreprise');
if(is_array($dept)){
  $q->andWhereIn('p.code_dept', $dept);
} else if($dept != -1){
  $q->andWhere('p.code_dept = ?', $dept);
}
$q->addWhere('s.code_per_cal = ?', $code_per_cal)
->addWhere('s.id_formation = ?', $id_formation)
->addWhere('s.id_up = ?', $id_up);



switch ($order_columns){
  case 'nom':
    $q->orderBy('p.nom '.$order_type);
    break;
  case 'entreprise':
    $q->orderBy('ent.nom '.$order_type);
    break;
  case 'sujet':
    $q->orderBy('s.intitule_stage '.$order_type);
    break;
  case 'tuteur':
    //$q->orderBy('s.tuteur '.$order_type);
    $q->orderBy('pt.nom '.$order_type);
    //$q->orderBy('pt.nom '.$order_type);
    break;
  default:
    $q->orderBy('s.etat_stage '.$order_type);
    $q->orderBy('p.nom DESC');
    break;
}

$q->execute();
当我尝试我的应用程序时,它似乎成功地完成了加入,但没有通过

该应用程序是用PHP5编写的,带有CodeIgniter和条令

有什么想法吗

很抱歉问了这么长的问题

编辑2017年5月23日:除了

case 'tuteur':
//$q->orderBy('s.tuteur '.$order_type);
$q->orderBy('pt.nom '.$order_type);
//$q->orderBy('pt.nom '.$order_type);
break;

Codeigniter活动记录应如下所示:

$q->order_by('column', 'ASC');

我正在测试它是否改变了某些东西。。。无论如何,我会让你知道的。编辑:当您查看代码时,除了更具可读性之外,它不会改变任何东西……您是否尝试将sql代码存储到变量中?例如:
$sql
。然后在模型中执行:
$this->db->query($sql)
。这很容易,我们为ci制作活动记录。我没有尝试,因为应用程序非常大,我想在查询的构建方式上保持一致,但是我会试着让你知道它是否有效,在这种情况下,我会这样做,因为我已经浪费了足够的时间:)如果我在我的控制器类中这样做,这种方式似乎有效,但这不是我想要的方式。。。在我的模型类中,我不能使用$this->db…请确保在
config/autoload.php
$autoload['libraries']=array('database'、'session'、'droits'、'fonctions'、'pagination')上加载了
database
library;