问题标签 [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 回答
61 浏览

symfony - Propel2 集合在更新时消失

我和我的同事已经使用 Symfony2 和 Propel1 编写了十几个 Web 应用程序。我们现在尝试使用 Propel2,但在将应用程序从 Propel1 迁移到 Propel2 时遇到以下问题。

在我们的简单模式中,父对象Auteur(作者)拥有一组子Livre(书)对象。我们使用 Symfony 表单来创建对象Auteur集合Livres。在这种情况下,AuteurLivres正确地保存在数据库中。

但是,当我们更新Auteur对象而不触及 的集合时,Livres集合被清空

我们无法确定这是否是 Propel2(或者不太可能是 Symfony2)中的错误,或者我们做错了什么。几乎相同的代码(在某种程度上适用于 Propel1)可以正常工作:更新时Livres集合不会清空Auteur

我们已经发布了一个重现该问题的最小项目。要使用 Propel2 对其进行测试,请执行以下操作:

要使用Propel1对其进行测试,请使用propel1分支:

我们将不胜感激有关此问题的任何提示。

0 投票
1 回答
86 浏览

symfony - Propel2,createdBy 字段

假设我有模型“问题”。每个问题都是由用户(当前用户)创建的。如何“自动”更新createdBycurrent.user

在 Doctrine2 中,我应该有依赖于security.context. 并且事件将订阅preSave(),设置$question->setCreatedBy( $context->getToken()->getUser());

如何使用 Propel2 实现这一目标?我可以createdBy在控制器中设置,但这很丑:(

我可以编写自定义行为,但如何security.context从行为中访问?

0 投票
1 回答
111 浏览

propel - PropelBundle.php 第 29 行中的 FatalErrorException:编译错误:Propel\PropelBundle\PropelBundle::boot():需要打开失败

我正在尝试将推进 ORM 与 sympfony v-2.7 一起使用

在我的作曲家中,我添加了这一行

“推进/推进捆绑”:“^1.4”,

并成功安装了这个包。

然后我使用这个将 Bundle 加载到我的 karnel 中

我的 config.yml 设置

但是当我尝试访问 - http://localhost/my-serp/web/ 我得到了这个错误

我遵循 github 上的文档,有人能告诉我我错过了什么吗?

0 投票
2 回答
72 浏览

php - 与 Mysql 和 Propel 的额外字段和第 4 个表外键的多对多关系

我正在设计一个数据库来跟踪用户及其与不同组织的关系。一个用户可以属于多个组织,一个组织可以有多个用户。这部分很容易通过多对多关系解决。然而,事情变得更加模糊的是,用户也可以是一个或多个组织的管理员,并且用户需要能够记录每个组织花费的时间。

似乎有很多方法可以解决这个问题。这是我到目前为止的表结构,如果您认为有更好的方法,我想听听您的意见。

我选择使用表id上的字段,user_organization因为它使创建表的外键time_log更容易。但是,我也可以将user_id, 和也organization_id放入其中time_log table

0 投票
1 回答
295 浏览

php - Propel2 中多张表的事务

在 Propel2 ORM ( http://propelorm.org/documentation/05-transactions.html ) 的文档中,有一个如何在事务中包装查询的示例。连接到单个数据库表“帐户”:

如何获得全局 PDO 连接对象或与 2 个表的连接(例如“Account”和“Book”)?

例如,这是我希望拥有的(在伪代码中):

0 投票
1 回答
1304 浏览

php - PHP & MySQL - SQLSTATE[HY000] [2003] 无法连接到 MySQL 服务器 - 许多连接通过 TCP

我有许多 PHP 实例(250 到 500 甚至更多),它们打开一个 DB 连接并执行 SELECT、UPDATE 和 INSERT。几秒钟后,我收到以下错误:

我花了至少 30 个小时来寻找解决方案。在我看来,故障在于 MySQL 或 Debian 的错误配置。我发现了各种配置选项,但它们都不起作用。


附加信息

  • 该错误仅发生在远程服务器上 - 当我直接在 DB-Server 上启动脚本时,我没有收到任何错误。

当前配置

sysctl.conf

等/mysql/my.cf

加载模块 - modules.conf

脚本在启动时开始


我的系统

  • Debian 8.2
  • MySQL 5.5.44-0+deb8u1
  • php5-mysql 5.6.13+dfsg-0+deb8u1
  • 具有 64GB RAM、48 个 CPU 的虚拟机(Intel Xeon E7540 at 2.0 GHz)
  • 在 ESxi 主机上运行 v. 6.0.0 2494585

负载测试

开始 x PHP-instances / loadTester.php

一个实例 SELECT / loadTest.php

网络图

网络图

0 投票
0 回答
89 浏览

php - 为什么 Propel 总是将 created_at 和 update at 设置为相同的值?

当我使用 PHP 和 Propel ORM 2.0.0-dev 以可时间戳行为更新表中的行时,它总是设置 created_at 字段以及 updated_at 字段,这意味着它们总是相同的。我希望 created_at 反映该行的创建时间,而不是上次修改的时间。这是我的代码,我做错了什么?

桌子:

在我们更新时将代码更改为不触及主键列不会阻止 Propel 更新 created_at 字段

0 投票
1 回答
80 浏览

php - Propel ORM - 在委托表的列上使用 setByName

我正在使用 Propel ORM 使加载和保存相当大的表单到数据库变得更容易。表格很大,但它几乎是扁平的数据,所以它本质上是一个有几百列的大表(我们称之为人员)。我不想在一个表中有几百列,所以我有一个主表和一堆一对一的子表。

我正在使用此处描述的委托行为。这很好,因为我可以调用PersonQuery::create()->findPK($id)->toArray()它,它不仅为我提供了 Person 中的数据,还为我提供了每个子表中的数据。然后我可以很容易地将这些数据加载到我的表单中。

当用户编辑表单并提交时,我使用 POST 将表单数据发送到服务器。然后,我遍历该 POST 数据,以便将其分配给 person 对象,并使用“ setByName”来执行此操作,而不是 Propel 提供的特定功能。所以不要这样做:

我可以这样做:

我遇到的问题是这不适用于我的委托表。因此,如果我的主表为 Person,并且我有一个名为 Favorites 的委托表,并带有一个字段 Color,我可以做$person->setColor('Blue'),但我做不到$person->setByName('Color','Blue')

那么......无论如何我可以做上述或类似的事情吗?我真的不想为每一列写出setter,并且每当我更改数据库时都必须更新该setter列表。谢谢!

0 投票
3 回答
170 浏览

php - Propel2 自定义查询已耗尽允许的内存大小

底部更新

我试图在我的表中获取名为“VersionHistory”的最新条目,并且由于 ID 设置为自动递增,因此我试图获取最大 ID。试图避免按降序对整个表进行排序并取顶部,因为我想随着表的增长最小化该查询所需的计算,并且该表可能会很快变得非常大。

我在 VersionHistory 构造函数中调用该函数,如下所示:

这会在 php.ini 中输出“允许的内存大小已耗尽”错误。知道为什么吗?在 VersionHistory 构造函数中注释掉查询修复了错误,所以它在查询中的某个地方。我尝试按照此处的说明设置自定义查询:http: //propelorm.org/documentation/03-basic-crud.html#using-custom-sql。但我无法让它发挥作用。跑步:

从 MySQL 工作台工作得很好而且很快。

关于我做错了什么的任何想法?

我试过的

将代码更新为:

仍然得到相同的内存分配错误。


将代码更新为:

删除了自定义函数,打开推进调试模式,它输出这个查询运行:

仍然遇到内存溢出。

0 投票
1 回答
665 浏览

php - 如何在带有 wamp 或 amps 的 Windows 中安装和运行 propel2

我想使用 propel 2,在 windows 中使用 .zip 文件,但我无法根据文档1使其工作(我使用 wamp 和 ampps,不同的服务器)所以我将文件解压缩到我的 WWW 文件夹中(wamp ) 服务器
我尝试调用http://server/test/propel/bin/propel.php 并得到一个 500 错误页面;观看我看到的 php 日志文件:

  • PHP 致命错误:在第 16 行的 ...\bin\propel.php 中找不到类 'Symfony\Component\Finder\Finder'
  • PHP堆栈跟踪:
  • PHP 1. {main}() ...\propel.php:0

然后我尝试使用命令行;我将 PHPBIN 变量设置为我的 php 文件夹(因为我的环境中不存在该变量)运行 propel.bat,我得到:

..\php5.5 未被重新配置为内部或外部命令...

但随后文档没有提到如何在之后继续配置连接

请问,有人试过吗?我应该怎么办??

提前致谢!