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 一起使用。所有模型查询工作正常,所有数据都被正确获取。

但是,toJSONexportTo('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 类?

当字段值包含/或\时,Propel ORM无法过滤

PHP ORM:Doctrine vs. Propel

PHP/Propel 删除记录 1:n

如何正确隐藏模型关系以防止返回 toArray() 或 toJson()?

Laravel json 响应:response()->json() 或 $var->toJson()