Composer构建自己的,exist的解决方法

作者: 新金沙平台  发布:2019-07-19

本文实例讲述了thinkphp视图模型查询失败提示:ERR: 1146:Table 'db.pr_order_view' doesn't exist解决办法。分享给大家供大家参考。具体方法如下:

回顾

本文实例讲述了thinkphp浏览历史功能实现方法,分享给大家供大家参考。具体实现方法分析如下:

一、问题描述:

在上一篇教程中,我们使用 codingbean/macaw 这个 Composer 包构建了两条简单路由,第一条是响应 GET ‘/fuck' 的,另一条会 hold 住所有请求。其实对 PHP 框架来说,有了路由就有了一切。所以接下来我们要做的事情就是让 MFFC 框架更加规范,更加丰满。

历史浏览功能都是使用了cookie功能记录用户信息放到了本地了,这样我们只要读取存储在cookies中的值就可以了,下面来给大家介绍一个基于thinkphp 实现浏览历史功能例子。

想用thinkphp的视图模型进行关联查询,结果出现了这样的问题(log日志记录):ERR: 1146:Table 'db.pr_order_view' doesn't exist,我就纳闷,视图模型怎么出来的sql是这样的呢,视图模型如下:

这就牵扯到了 PHP 框架另外的价值:确立开发规范以便于`多人协作`,使用 ORM`、`模板引擎 等工具以`提高开发效率`。

就像浏览器一样,能够记录访问了哪些页面,这样能够减少时间,下面我们实现浏览历史的功能。

复制代码 代码如下:

正式开始规划文件夹

1.在你需要记录浏览数据的产品或新闻页面,记录cookie需要保存的信息,例如下面这行代码,把页面ID,产品名称,价格,缩略图,网址传给cookie_history。

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'
),
);
}
?>

新建 MFFC/app 文件夹,在 app 中创建 controllers、models、views 三个文件夹,开始正式开始踏上 MVC 的征程。

复制代码 代码如下:

二、解决方法:

(谁说我抄 Laravel 了,我抄的明明是 Rails :-D)

cookie_history($id,$info['title'],$info['price'],$info['pic'],$thisurl);

看了手册及百度了很多,没有找到解决方案,调用也没有错$Form = D('Admin/OrderView');(这里我用了分组)经过我自己查看,原来是有问题的,原来视图模型的名字命名错了,OrderView.class.php,正常应该是 OrderViewModel.class.php。

使用命名空间

2.function.php 里面添加代码

对于ThinkPHP初学者来说尤其要注意不要犯这样的低级错误!

新建 controllers/BaseController.php 文件:

复制代码 代码如下:

希望本文所述对大家的ThinkPHP框架程序设计有所帮助。

<?php
/**
* BaseController
*/
class BaseController
{
  
  public function __construct()
  {
  }
}

/**
  ----------------------------------------------------------
 * 浏览记录按照时间排序
  ----------------------------------------------------------
 */
function my_sort($a, $b){
$a = substr($a,1);
$b = substr($b,1);
if ($a == $b) return 0;
return ($a > $b) ? -1 : 1;
  }
/**
  ----------------------------------------------------------
 * 网页浏览记录生成
  ----------------------------------------------------------
 */
function cookie_history($id,$title,$price,$img,$url){
$dealinfo['title'] = $title;
$dealinfo['price'] = $price;
$dealinfo['img'] = $img;
$dealinfo['url'] = $url;
$time = 't'.NOW_TIME;
$cookie_history = array($time => json_encode($dealinfo));  //设置cookie
if (!cookie('history')){//cookie空,初始一个
cookie('history',$cookie_history);
}else{
$new_history = array_merge(cookie('history'),$cookie_history);//添加新浏览数据
uksort($new_history, "my_sort");//按照浏览时间排序
$history = array_unique($new_history);
if (count($history) > 4){
$history = array_slice($history,0,4);
}
cookie('history',$history);
}
}
/**
  ----------------------------------------------------------
 * 网页浏览记录读取
  ----------------------------------------------------------
 */
function cookie_history_read(){
$arr = cookie('history');
foreach ((array)$arr as $k => $v){
$list[$k] = json_decode($v,true);
}
return $list;
}

您可能感兴趣的文章:

  • ThinkPHP关联模型操作实例分析
  • PHP实现MVC开发得最简单的方法——模型
  • ThinkPHP实例化模型的四种方法概述
  • 最新的php 文件上传模型,支持多文件上传
  • PHP开发框架Laravel数据库操作方法总结
  • PHP的Yii框架中使用数据库的配置和SQL操作实例教程
  • PHP的Laravel框架结合MySQL与Redis数据库的使用部署
  • 实现PHP框架系列文章(6)mysql数据库方法
  • ThinkPHP框架分布式数据库连接方法详解
  • 自制PHP框架之模型与数据库

新建 controllers/HomeController.php 文件:

3.在需要显示浏览记录的页面输出信息

<?php


/**
* HomeController
*/
class HomeController extends BaseController
{
  
  public function home()
  {
    echo "<h1>控制器成功!</h1>";
  }
}

复制代码 代码如下:

增加一条路由: Macaw::get('', 'HomeController@home');`,打开浏览器直接访问

$this->assign('history',cookie_history_read());

Fatal error: Class 'HomeController' not found in /Library/WebServer/Documents/wwwroot/MFFC/vendor/codingbean/macaw/Macaw.php on line 93

模板里面用volist显示出来就行了。

本文由新金沙平台发布于新金沙平台,转载请注明出处:Composer构建自己的,exist的解决方法

关键词: 新金沙平台