本文實例講述了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方法.