- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个表:步骤和连接 1:n 的链接。我的目标是通过步骤对象维护链接。我从数据库中检索所有步骤并使用链接表填充关系。我保留了包含 JSON 链接集合的步骤对象,并使用 REST 将其返回到前端。
这意味着,如果一个步骤链接或取消链接到前端中的另一个步骤,我会将整个步骤发送回后端,包括链接集合。在后端我使用以下代码:
public function put($processStep) {
if (isset($processStep['Processesid']) && isset($processStep['Coordx']) && isset($processStep['Coordy'])) {
$p = $this->query->findPK($processStep['Id']);
$p->setId($processStep['Id']);
$p->setProcessesid($processStep['Processesid']);
if (isset($processStep['Flowid'])) $p->setFlowid($processStep['Flowid']);
if (isset($processStep['Applicationid'])) $p->setApplicationid($processStep['Applicationid']);
$p->setCoordx($processStep['Coordx']);
$p->setCoordy($processStep['Coordy']);
$links = $p->getLinksRelatedByFromstep();
$links->clear();
foreach ($processStep['Links'] as $link) {
if (!isset($link['Linkid'])) {
$newLink = new \Link();
$newLink->setFromstep($link['Fromstep']);
$newLink->setTostep($link['Tostep']);
$links->prepend($newLink);
}
}
$p->save();
return $p;
} else {
throw new Exceptions\ProcessStepException("Missing mandatory fields.", 1);
}
}
我基本上删除了步骤中的每个链接,并根据请求对象重新创建了链接。这节省了我比较删除和添加哪些链接的精力。插入功能就像一个魅力 Propel 会自动创建新链接。问题是它不像插入那样删除。我已经检查了正在持久化的对象($p),并且看到链接被删除,但在 MySQL 日志中,Propel 绝对没有执行任何操作。看起来链接集合中丢失的成员不会触发脏标志或类似的东西。
也许我的做法是错误的,希望有人能提供一些建议。
谢谢
最佳答案
要删除记录,您绝对必须使用delete
。在确定需要添加、更新和删除哪些实体时,集合上的 diff
方法非常有用。
关于PHP/Propel删除记录1 :n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42580634/
是否可以在不修改架构的情况下生成 Propel 迁移文件?我只需要插入值。 谢谢。 最佳答案 您可以像这样生成空白迁移: 插入迁移:创建 关于propel - 单独为数据输入生成 Propel 迁移文
我在将 sql 查询转换为 propel 查询时遇到问题。 查询看起来像(我之前已经要求过此查询:Changing a sql query using join instead of a subsel
我已经广泛搜索了如何集成 propel 和 Zend Framework 2,但是我还没有找到解决方案。 这是我到目前为止所拥有的。 已安装的 ZF2 骨架目录插入来自 ZF 站点的示例专辑表数据 我
我在我的一个 Controller 中使用 Propel 参数转换器:(Symfony 2.4.2 + Propel 1.7) * @ParamConverter("center", convert
我有一个刚刚发布的应用程序。自从我写了它,我就了解了 amfphp 和 propel。在应用程序中使用两者都会“很好”,但我不能说此时需要它。 在重构代码之前,您会考虑哪些类型的事情? 最佳答案 进行
只是想知道 Propel 对数据库分片的支持有多好?我正在考虑用 PHP 创建我的应用程序,使用 MySQL 作为数据库服务器,使用 Propel 作为 ORM。 我发现从一开始就保持架构的可扩展性可
我正在使用 Propel 框架与数据库进行通信。当我尝试进行输入时,我认为它正在使用 PDO 并生成 bindParam(),因此应该涵盖 SQL 注入(inject)。 但是它是否提供额外的安全性,
我想使用 propel 获得所有模式表的输出。当引用特定的TableMap时 $users = UsersTableMap::getTableMap(); $map = $users->getData
我正在使用 Propel 框架与数据库进行通信。当我尝试进行输入时,我认为它正在使用 PDO 并生成 bindParam(),因此应该涵盖 SQL 注入(inject)。 但是它是否提供额外的安全性,
我正在努力获取连接数据库的动力。我使用 propel reverse "..." 创建了类映射和表映射,并创建了以下结构: propel.ini [propel] # A better Plurali
我在使用 Propel2(版本 2.0.0-dev)时遇到问题。 我有三个外键指向同一个表: 尽管 PhpNames 不同,但基类会错误地生成 default: $key
我的 php 项目基于两个独立的数据库。一种是 MySQL DB,另一种是 Microsoft SQL-server。基本上我已经配置了整个环境并且它几乎可以正常工作。 几乎,因为我在尝试访问两个数据
我最近收到了学校的一项作业,我必须为 ORM 创建一个 Propel Schema。这并不是真正的问题,但要求之一是以多对多关系连接其中两个表。 通常,您会使用交叉表(保存两个表的属性)来做到这一点,
当我尝试在网页上发布加入日期时遇到问题: Fatal error: Class 'getJoinDate' not found in ******** $newDate = getJoinDate::
我需要将以下 sql 查询转换为 Propel: SELECT tag.tag, count( content_tag.tag_id ) AS weight FROM content_tag, tag
我有一个 mysql 数据库,里面有一些表。两个表的示例: TABLE "dogtoilets" - type - location_id (FK) TABLE "locations" - id -
我现在在 propel 网站 (http://www.propelorm.org/wiki/Documentation/1.5/Installation) 上,正如我所料,有很多安装它的命令行说明,但
我目前正在重构一些东西以使用 Propel。 我们目前有一个函数可以像这样将文本添加到“历史”字段: UPDATE tablename SET history = CONCAT(history,
->where("((Job.TwCountry = ? AND Job.TwAbroad = 1) OR (Job.TwCountry != ? AND Job.TwCountryTarget LI
我在 symfony 2.1 中使用 propel master-dev。可以写这样的东西吗?否则我如何向 select 语句添加别名。 $products = ProdottinewQuer
我是一名优秀的程序员,十分优秀!