本文实例讲述了thinkphp视图模型查询失败提示:ERR: 1146:Table 'db.pr_order_view' doesn't exist解决办法。分享给大家供大家参考。具体方法如下:
一、问题描述:
想用thinkphp的视图模型进行关联查询,结果出现了这样的问题(log日志记录):ERR: 1146:Table 'db.pr_order_view' doesn't exist,我就纳闷,视图模型怎么出来的sql是这样的呢,视图模型如下:
复制代码 代码如下:
class OrderViewModel extends ViewModel
{
public $viewFields = array(
'Order' =>array(
'_as'=>'Orders', //重新命名,以免与系统语法冲突
'id'=>'oid',
'ordid',
'user',
'product',
'status',
'paynum',
'cat',
'payment_trade_no',
'ip'=>'mip',
'reserve_time',
'createtime',
'payment_trade_status',
),
'Member'=>array(
'id'=>'mid',
'name'=>'uname',
'cardnum',
'tel',
'reg_time',
'reg_ip',
'qq',
'email',
'address',
'last_login_time',
'last_login_ip',
'_on'=>'Orders.user=Member.id'
),
'Product'=>array(
'id',
'shorttitle',
'img1',
'category',
'_on'=>'Orders.product=Product.id'
),
);
}
?>
二、解决方法:
看了手册及百度了很多,没有找到解决方案,调用也没有错$Form = D('Admin/OrderView');(这里我用了分组)经过我自己查看,原来是有问题的,原来视图模型的名字命名错了,OrderView.class.php,正常应该是 OrderViewModel.class.php。
对于ThinkPHP初学者来说尤其要注意不要犯这样的低级错误!
希望本文所述对大家的ThinkPHP框架程序设计有所帮助。
连接不建议做聚合操作,很容易出问题,一般这种都直接同步用户的消费金额,换句话说,就是再单独一份用户消费表,用户有消费的时候就增加这个字段的值。
或者把你的sql客房订单和餐饮订单分开写,不然就只有嵌套了,似乎没有这个必要
你传的是“RJ1”,M(“RJ1”)这个M方法内传的是类名,thinkphp在查询时会将类名转换为表名。归则是表前缀+_大写字母与小写字
母+_大写字母与小写字母,例如AbcDef转换为表名就是caiyy_abc_def,如果换为小写就没问题了action="/Index
/addsoft/rj1",程序还有一点错误:
$Form =M($soft);$Form->create();
这里应该是D($soft);只有D函数创建的对象有create方法.