问题标签 [propel2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
44 浏览

php - Propel2 使用函数构建查询,然后调用 Find

在这里使用 PHP 几天,我遇到了一个让我非常难过的问题。我正在使用 Propel2 根据用户选择的过滤器从数据库中检索行。最终我希望有很多用户可以选择的过滤器,然后生成一个自定义的 Propel2 调用来检索记录。由于可能的查询数量呈指数级增长,我无法使用 If/Then。但是,下面我的示例的每种方法对我来说都失败了。

上面的代码返回:

这可能只是一个 PHP 函数链接语法的东西,所以这是一个有效的 Propel2 调用的样子:

我将非常感激这方面的帮助。谢谢你。

0 投票
1 回答
166 浏览

php - 路径“propel.database.connections.project.attributes”的类型无效。预期的数组,但得到了字符串

我正在尝试使用基于 schema.xml 文件的 Propel ORM 创建 SQL Schema

我收到一个错误,这是:

这是我的 propel.xml 文件:

这是我的 schema.xml 文件:

0 投票
0 回答
110 浏览

php - Propel 事务中的有序持久性

我正在尝试在 Propel 中使用生命周期回调,postInsert. 我遇到的问题是,由于 INSERT 的持久性排序和数据库 FK 约束,存在先有鸡/先有蛋的场景。

在回调中,我需要保留当前对象/记录,您认为在postInsert执行方法时会出现这种情况。然而,这似乎并没有发生(我还没有深入研究 Propel 库来确认)。我不确定这是否是一个错误/否则,或者它在 Propel 事务中并且持久性在生命周期的后期处理(当然希望不是这种情况)。

由于这是一个postInsert回调并且它实际上并没有在之前被持久化,所以我现在无法强制 a save(),因为这会导致无限循环。

除了通过强制持久性来重构所有代码以独立处理它之外,我已经没有想法了。

首先,有人可以确认事务中的持久性是否应该发生在 a 之前postInsert,从而使自动递增的主键值可用?

如果这不是预期的功能,有没有办法指示 Propel 在给定事务中尊重的 INSERT 顺序?

如果上述内容不清楚,则示例代码:

Foo模型

0 投票
1 回答
81 浏览

php - Propel2 加入表格,然后使用聚合函数进行分组

我有两张表:food(id, name), review(user_id, food_id, rating)。现在我想将食物表与评论表连接起来,并将虚拟列添加到名为 avg_rating 的食物表中,这显然会保留基于评论的食物平均评分值。所以我的想法是做这样的事情:

现在在调试器中我看到了这个:

问题是平均评分不正确。在 virtualColumns 中,您可以看到值为“5.0000”的 avg_rating 字段。但是当你看起来稍微低一点时,你实际上可以看到这种食物有 2 条评论,评级为 3 和 5,所以平均值应该是“4.0000”。

问题出在哪里?为什么这不能正常工作?

0 投票
0 回答
172 浏览

php - PHP Propel 运行时缓存查询

早上好,

我们正在使用与 Thelia 结合的推进组合。但是对于某些查询,我们想添加缓存。是否可以在运行时设置缓存配置?

比如我们需要邮递方式的id,我们经常使用这个查询,所以我希望它被缓存。

谢谢

海洋

0 投票
1 回答
123 浏览

php - 为什么 propel 无法将此 ENUM 字段设置为“Y”?

我为此挠头。我有下表:

我执行以下 PHP:

该方法在查询日志中生成一行save()

当该approved字段设置为Y时,相同的查询运行并成功(该字段切换为N)。有什么想法可能会在这里发生吗?Propel2 讨厌 ENUM 吗?有什么建议可以解决这个问题吗?

0 投票
1 回答
106 浏览

mysql - 推动对象集合将列别名绑定到外部表对象,以便将其取出

我有两个数据库表,一个是Item,另一个(Unit)代表Item表可用的所有度量单位。在这种情况下, Item表包含Unit表的外键,它充当一对多关系。

使用 Propel ORM,我可以像下面这样加入两个表并获得 json 结果:

输出结果将是:

如您所见,列别名MUnit从单元对象到父对象。但我真正需要的是将别名保留在 Unit 对象中,如下所示。

任何实现预期产出的建议都将是可观的。谢谢你。

更新

如果我将代码更改为结果对象集合,则输出将是:

输出:

所以我真正需要的是将virtualColumn MUnit放入Unit对象中。

0 投票
0 回答
44 浏览

php - 如何从 Propel2 中的非直接关系中获取值?

我正在编写一个脚本,它使用 Propel2 从我们的数据库中加载所有新闻。
我当前的代码如下所示:

这给了我以下输出:

如上面的输出所示,该Author列返回ID添加它的用户(通过与Users表的关系)。
我的目标是获取Firstnameand LastnamefromUserDetails作为Author列而不是ID用户的。
所以输出将如下:

这是我目前的方案: 方案

我如何在不与Newsto建立新关系的情况下完成此操作UserDetails(除非绝对需要)?

小旁注:如果我问这个问题的流程有点不对劲,我很抱歉,我一直在寻找解决方案大约两个星期了......

更新:这是这个的模式文件

0 投票
1 回答
137 浏览

php - 推进数据库:反向生成schema中的空外键属性

我有一个使用以下语法创建的表:

运行propel database:reverse生成的架构时如下所示:

如您所见,元素的foreign属性foreign-key为空,这反过来又阻止了 propel 基于此模式生成模型。

我有点卡在这里 - 任何帮助将不胜感激

0 投票
1 回答
92 浏览

symfony - 如何在推进 2 上创建行为

我在 symfony 2.8 项目上安装了以下软件包,因为我想升级到 3.4 版以利用 LTS

我在使用 Propel 版本 1 之前搜索如何声明行为,并声明行为,在 config.yml 中执行此操作就足够了:

问题是这个配置不再适用于版本 2,我找不到关于如何声明推进行为的非常精确的文档,因为这里的目标是然后在 schema.xml 中使用它,如下所示:

目标是运行:propel:model:build 但是当我运行这个命令时,我得到这个错误信息: