我有这一行来查询我需要的东西,在一个名为Payment.php
的模型的函数中,
$sIDs = Yii::app()->db->createCommand('SELECT service_id FROM booking WHERE DATE_FORMAT(date, "%m-%Y") = "06-2015" AND complete = 1 AND service_id IS NOT NULL')->queryAll();
然后我的foreach遍历$sIDs
的数组列表:
foreach ($sIDs as $sID){
$serMod = Service::model()->findByPk($sID); //This is line 45
$serPrice = $serMod->defaultPrice;
$serviceIncome += $serPrice;
}
不幸的是,它显示了一个错误:
致命错误:班级'服务'在 F:\ xampp \ htdocs \ wellness \ protected \ models \ Payment.php 中找不到 45
致命错误: Class' CListIterator'在 F:\ xampp \ htdocs \ yii \ framework \ collections \ CList.php 中找不到 90
我已经通过互联网搜索,查看了foreach
的语法,但我已经拥有了正确的语法。是否有一点我可能遗漏了?请指导我,谢谢。
修改
经过进一步调试后,我一直在使用PHPExcel这一行:
spl_autoload_unregister(array('YiiBase','autoload'));
这基本上禁用任何调用Yii函数或任何东西的东西。
答案 0 :(得分:1)
问题不在public class Tunnel extends LinearLayout implements View.OnTouchListener {
Paint paint = new Paint();
TextView tv;
public Tunnel(Context context) {
super(context);
setOnTouchListener(this);
setWillNotDraw(false);
tv = new TextView(getContext());
tv.setX(450);
tv.setY(800);
tv.setTextSize(20f);
tv.setTextColor(Color.WHITE);
addView(tv);
}
@Override
public void onDraw(Canvas canvas) {
paint.setColor(Color.RED);
for (int x = 0; x < canvas.getWidth(); x++) {
canvas.drawLine(x, (float) upperBound(x), x, (float) lowerBound(x), paint);
}
setBackgroundColor(Color.BLACK);
}
private double upperBound(double x) {
return 50 * Math.sin(x / 50) + 400;
}
private double lowerBound(double x) {
return 50 * Math.sin(x / 50) + 600;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
}
,而是找不到类,
由于我没有看到在foreach周期之前加载的代码,我无法告诉你为什么没有找到foreach
。
试着解决这个问题。如果您这样做,请尝试Service
或vardump
课程,以便更好地了解其中包含的内容
答案 1 :(得分:0)
我认为您必须检查数据库的一致性。我的意思是检查表格预订中是否有一些记录表服务中没有service_id密钥(可能这是模型服务背后的表)。您可以通过以下查询来检查:
SELECT service_id FROM booking WHERE (service_id IS NOT NULL ) AND service_id NOT IN ( SELECT service_id FROM service );
另外我认为你必须提到这样的行:
$serMod = Service::model()->findByPk($sID['service_id']);
因为事件在查询中只有一列,QueryAll会以一维数组的数组返回它。
答案 2 :(得分:0)
我一直在使用PHPExcel这一行:
spl_autoload_unregister(array('YiiBase','autoload'));
因此,当然,调用需要其他模型的函数将被禁用。例如,将禁用调用函数来创建模型Servce::model()->findByPk()
。
因此,在上面的行之前执行适当的功能并将其附加到变量。现在,您可以在控制器的操作中的任何位置使用它。
答案 3 :(得分:0)
嗨这是获取excel报告.Yii在PHP脚本执行完毕后正在寻找CList.php文件
spl_autoload_unregister(array('YiiBase','autoload'));
这允许PHPExcel正确执行并填充httpRequest
一旦我弄明白,问题的解决方案就相当简单了
$phpExcelPath = Yii::getPathOfAlias('ext.phpexcel.Classes'); //get path for PHPExcel
spl_autoload_unregister(array('YiiBase','autoload'));
include($phpExcelPath . DIRECTORY_SEPARATOR . 'PHPExcel.php');
//do PHPExcel operations: load file, parse and create array, echo JSON array
spl_autoload_register(array('YiiBase','autoload')); //reload Yii before