在调用数据库查询时,由于从model接收从controller传递过来的参数时,顺序发生了错误,导致模糊匹配的关键字不是从前端post过来的name数值,因而始终查不出数据,由于这个错误一旦被忽略,是不会报错的,所以一直没有debug出来,浪费我好多脑细胞,关键是时间被耗费了,谨以此文警示自己,常识性的错误不要再犯,有时一直无法找到的错误可能就是出错在很基础的地方。
YAF 控制器
在YAF应用中,控制器以框架约定的两种方式存在于文档目录中,其一是application/controllers
,这里的控制器主要是全局的控制器,不需要以模块的方式访问;其二是在/application/modules/xxx/controllers
,这里的控制器是属于xxx模块的,在访问时路由中应该加入模块名称。
控制器主要用于数据接收,调用model,数据处理和调用view层,也就是连接数据库和前端的媒介。
YAF model
在大多数框架,比如python的django,php的tp、laravel等中,model直接可以用于数据表的定义,即ORM,但是ORM这种将数据库操作转换为面向对象的方式在许多情境下存在诸多不便,比如二次开发时需要将model重写,某些功能需要使用其他语言,或者在整个应用用其他语言重构时,没有一个通用的标准是很痛苦的,执行效率也难以保证,因此目前看来使用sql语句是比较合理地方式,ORM或许在未来会有新的突破,但生产环境下还是慎用。
在YAF中没有ORM的概念,因此model之中使用pdo来优化数据库的操作,把sql语句分成一个个功能,执行语句后将返回的信息交还给controller就行啦。