Propel toJson 或 exportTo('JSON') 不适用于 Laravel
Posted
技术标签:
【中文标题】Propel toJson 或 exportTo(\'JSON\') 不适用于 Laravel【英文标题】:Propel toJson or exportTo('JSON') not working with LaravelPropel toJson 或 exportTo('JSON') 不适用于 Laravel 【发布时间】:2013-11-03 09:23:27 【问题描述】:在http://picqer.com/blog/propel-with-laravel 的帮助下,我已将 Propel 配置为与 Laravel 一起使用。所有模型查询工作正常,所有数据都被正确获取。
但是,toJSON
和 exportTo('JSON')
方法既不适用于对象,也不适用于某些查询返回的 PropelObjectCollection。
Laravel 抛出的异常有:
对于exportTo('JSON')
和toJSON()
全部大写方法
Unknown parser class "PropelArrayParser"
对于toJson()
方法:
Unknown parser class "PropelJsonParser"
我认为问题在于 Laravel 的自动加载。我可能缺少一个可以帮助它找到 PropelJsonParser 文件的条目。
附:我不知道“php artisan dump-autoload”会产生什么影响。但我确实按照教程运行了它。
build.properties 文件如下所示:
propel.project = QuranApp
propel.database = mysql
propel.mysql.tableType = InnoDB
propel.database.url = mysql:host=localhost;dbname=quransociety
propel.database.user = user
propel.database.password = password
propel.disableIdentifierQuoting = false
propel.php.dir = $propel.project.dir/../../models
propel.output.dir = $propel.project.dir/../../database/propel
propel.phpconf.dir = $propel.project.dir/conf
propel.schema.dir = $propel.project.dir
【问题讨论】:
【参考方案1】:我在 laravel start.php 中添加了这两行(在开头):
set_include_path(dirname(__DIR__) . '/vendor/propel/propel1/runtime/lib/parser' . PATH_SEPARATOR . get_include_path());
require dirname(__DIR__) . '/vendor/propel/propel1/runtime/lib/parser/PropelJSONParser.php';
所以基本上我是手动将它们包括在内,这个错误就消失了。应该有其他方法,与 larvel 自动加载机制一起玩得很好,但到目前为止我并没有以不同的方式解决它
【讨论】:
以上是关于Propel toJson 或 exportTo('JSON') 不适用于 Laravel的主要内容,如果未能解决你的问题,请参考以下文章
为啥我不能在其他类或函数中使用我的 Propel ORM 类?