Thinkphp中视图模型存在的问题已经解决方法

原创 2015年04月03日 10:27:39

问题描述:

在使用thinkphp框架的时候使用了其中的ViewModel在实现视图的时候发现了其中的问题,不能使用where语句来筛选数据。

class CodeViewModel extends ViewModel{
	public $viewFields = array(
			
			'code'=>array("id","name","summary","code","time"),
			'language'=>array("id"=>"langid","name"=>"lang","_on"=>"code.language=language.id",'_type'=>'LEFT'),
			'type'=>array("id"=>"typeid","name"=>"type","_on"=>"code.type=type.id",'_type'=>'LEFT'),
			'user'=>array("id"=>"userid","name"=>"person","_on"=>"code.user=user.id",'_type'=>'LEFT')
			);
	
}

如上面的代码所示,我们定义了一个叫CodeView的视图

按照官方的文档所写的用法就是

$Model = D("CodeView");
$Model->where('id>10')->order('id desc')->select();

但是在我真正的使用的时候是不行的,至少上面那个用法显示的结果就是bool(false)

但是如果我把上面的where条件去掉

$Model->order('id desc')->select();

这样的话确实是能够执行的,那我就在想为什么是这样的呢,我就猜测是where条件的地方出现了问题于是我就打印出了这条sql语句的内容

SELECT code.id AS id,code.name AS name,code.summary AS summary,code.code AS code,code.time AS time,language.id AS langid,language.name AS lang,type.id AS typeid,type.name AS type,user.id AS userid,user.name AS person FROM zz_code code JOIN zz_language language ON code.language=language.id LEFT JOIN zz_type type ON code.type=type.id LEFT JOIN zz_user user ON code.user=user.id WHERE ( id>1 ) ORDER BY code.id desc

可以看出我们的wher条件中的id是不确定那个表的id的,因为我们每个表都有个主键名称叫id

我们把上面sql放在mysql中执行报错结果和我们预想的一样

Column 'id' in where clause is ambiguous

所以我们的解决办法就是在where条件中使用明确的id 

$Model->where('code.id>10')->order('code.id desc')->select()
就是上面所示

thinkphp 模板不存在:./Application/Home/View/Index/index.html 的原因

问题:在view(视图)下建立一个模板后,访问出现: 模板不存在:./Application/Home/View/Index/index.html; 解决方式:经过仔细比对发现,thinkPHP3....
  • cvper
  • cvper
  • 2017年03月27日 01:32
  • 2001

unslider 实现图片轮播

1.请先下载所需css js文件下载链接[http://unslider.com/](http://unslider.com/)jquery文件非此下载路径 ...

MySQL check the manual that corresponds to your MySQL server version for the right syntax错误

百度说 关键字冲突。。我就把字段名全改了,还是不行。。。 原来是表名order和mysql关键字冲突。换了个名字就好了。...

thinkphp视图模型 视图必须是真是存在的表

ThinkPHP提供的视图查询应用功能十分强大,用户利用视图查询功能可以将多个数据表的字段内容按需要进行指定和筛选,组织成一个基于这些数据表的视图模型,然后就可以通过该模型直接进行多表联合查询,非常方...

架构蓝图--软件架构 _4+1_ 视图模型

  • 2014年10月02日 08:29
  • 1.15MB
  • 下载

Silverlight实战示例6(兼集合属性的妙用)--客户端视图模型层(VM)

3)视图模型层DynamicDataViewModel .cs using System; using System.Net; using System.Windows; using Sy...

Windows Store apps开发[7]视图模型与数据绑定

注:本系列学习帖子我在DevDiv.com移动开发社区原创首发         转载请注明出处:BeyondVincent(破船)@DevDiv.com 如果你有什么问题也可以前往交流 下面是首...

Silverlight实战示例6(兼集合属性的妙用)--客户端视图模型层(VM)

3)视图模型层DynamicDataViewModel .cs using System; using System.Net; using System.Windows; using Syst...

架构蓝图--软件架构 "4+1" 视图模型

架构蓝图--软件架构 "4+1" 视图模型 简介: 本文基于多个并发视图的使用情况来说明描述软件密集型系统架构的模型。使用多重视图允许独立地处理各"风险承担人":最终用户、开发人员、系统工程师、项目经...
  • lovenmg
  • lovenmg
  • 2011年03月17日 20:46
  • 518

spring中的Map集合、视图模型

26、Spring中的用户的添加 注意:1.WEB-INF下的views下的 自己新建即可,在类中return 到jsp文件即可,这里只需要说明每个类即可。 2.springmvc-...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Thinkphp中视图模型存在的问题已经解决方法
举报原因:
原因补充:

(最多只允许输入30个字)