问题标签 [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.
php - 使用 Propel ORM 的多租户应用程序
我目前是一个多租户应用程序的开发人员,其中有一个“主”数据库,它保存客户的数据,也用作模板,也就是说,它为每个新客户复制一个不同的名称,以保存它的数据。
在 PHP 中使用Propel ORM时,模型配置在一个 XML 文件中完成,结构如下:
是否可以使用相同的 XML 文件来为所有客户数据库的所有连接建模,或者我是否需要为每个文件创建一个单独的文件,除了数据库名称之外完全相同?
由于我的问题已被标记为这个问题的潜在重复,我之前发现过,我想解释一下为什么它不同:
- 在这种情况下,数据库的数量会随着时间而改变,而在那个问题中它是固定的
- 在这种情况下,所有数据库和每个数据库中的所有表都将具有完全相同的结构
- 我不想为每个客户提供不同的类,而是一组模型类,它将查询最后选择的数据库
propel - 推动反向生成表但schema.xml中没有列信息
我正在使用带有 Postgres 数据库的 Propel 2。当我运行以下命令时,它似乎可以工作,但是在生成的 schema.xml 文件中,我没有得到任何列信息:
生成的 schema.xml 如下所示:
我完全不知道为什么会这样。任何帮助表示赞赏。
php - macOS Sierra 上的 PHP Propel 无法创建有效的符号链接
推进手册说:
为了让脚本更容易执行,您还可以将推进生成器的 bin/ 目录添加到您的 PATH 中,或者创建一个符号链接。例如:
如果这样做,则会创建符号链接,但如果我运行 propel,则会收到以下错误:
ln -al 的结果
我该如何解决这个问题?
注意:调用 vendor/bin/propel 工作正常
php - 通过验证推进枚举
我有一个用户表,其中包含一个性别枚举字段,选项为男/女。如果我创建一个用户,如果我尝试将性别设置为例如“跨性别”,则会引发异常。
是否可以允许将跨性别设置为“跨性别”并且仅在调用 validate() 函数时才会出现验证错误?所以它与其他字段一起验证?
架构.xml:
PHP代码:
memory - 推动orm - 迁移
我有这个问题,我找不到很好的信息。对于我发现的那些信息,没有一个有用。就这样,我用推进器开始了一个项目,我创建了一个包含基本表的第一个数据库,运行“php propel init”,一切正常。然后我需要另一个表,我在它的 schema.xml 中创建,但是当我运行任何这些迁移工具时,我得到这个错误:
这非常令人沮丧,我觉得互联网缺乏这种推进信息。
php - PHP/Propel 删除记录 1:n
我有两个表:步骤和链接加入 1:n。我的目标是通过步骤对象维护链接。我从数据库中检索所有步骤并使用链接表填充关系。我保留包含指向 JSON 的链接集合的 step 对象,并使用 REST 将其返回到前端。
这意味着,如果一个步骤与前端的另一个步骤链接或取消链接,我会将整个步骤发送回后端,包括一组链接。在后端,我使用以下代码:
我基本上是从一个步骤中删除每个链接,并根据我重新创建链接的请求对象。这让我省去了比较删除和添加哪些链接的工作。插入工作就像一个魅力 Propel 会自动创建新链接。事情是它不会像插入那样删除。我检查了被持久化的对象($p),我看到链接被删除,但在 MySQL 日志中,Propel 绝对没有执行任何操作。看起来链接集合中缺少的成员不会触发脏标志或类似的东西。
也许我的方法是错误的,我希望有人能提供一些建议。
谢谢
php - /usr/bin/env: “php\r”: 没有这样的文件或目录
我在 Propel ORM 配置过程中遇到问题。
我按照这个配置文件在我的 Vagrant 上使用 PHP 7.1 准备了环境:
目前我想安装 Propel ORM。我将 Propel 添加到作曲家,安装,现在我输入(通过 Vagrant 中的 SSH)
/var/www/application/Vendors/bin/propel init
但不幸的是我收到错误:
我能做些什么来解决它?
编辑: 我运行的文件(未编辑,通过 Composer 安装):
fosuserbundle - Symfony 3.2 的 Fos 用户包不再支持推进数据存储?
我一直在运行Symfony 2.3并且经常使用FOS User Bundle ,所以我在一个带有Symfony 3.2.8的新项目中重用了我的一些config.yml配置。我刚刚通过 composer 恢复了 FOS 用户包,我想知道为什么该供应商包缺少旧版本中使用的用户类。另外,我不能在 config.yml 中将 'propel' 指定为 'user_class '。我收到消息:FOS\UserBundle\Propel\UserManager
'不支持驱动程序“推进”。请选择 ["orm","mongodb","couchdb","custom"] 之一。
应该做什么?将 Propel 用户管理器实现为自定义用户类?
非常感谢您的信息!问候, 史蒂芬
propel2 - Propel ORM:查询以大写开头字符搜索表名
我正在使用 Propel ORM
这是我的 schema.xml 中的生成器。当我进行查询时,它返回为
42S02 - SQLSTATE [42S02]:未找到基表或视图:1146 表 'taw.Tawcompanyresearch' 不存在
请注意,表名是小写字母,但搜索结果将表的第一个字符返回为大写。
这个值在哪里可以改变?请给我一些关于这个错误的见解。谢谢你
php - 仅选择 Propel 中的计算列
我正在尝试使用仅返回计算列的 Propel 执行选择,但我总是选择其他列。
例如:
结果查询:
我已经能够减少选择的字段数量,仅包括一个字段。例如,此查询仅返回两个字段:
结果查询:
¿ 在 Propel 中有没有办法只选择计算列?
我已经看到ModelCriteria->doSelect()
基于受保护的ModelCriteria->isSelfSelected
属性添加了列,该属性已设置ModelCriteria->select()
但未设置,addAsColumn()
因为它来自 Criteria,并且在 ModelCriteria 中没有被覆盖。
不知道这是一个错误还是我做的不好。