我试图在Propel ORM中做一些非常简单的事情,我似乎无法解决或找到答案。
基本上我有一个名为post的表和一个名为post_history的表。每当有人对帖子进行编辑时,先前的版本将首先保存到post_history。
我有一个'撤消'每个帖子的按钮,我只想选择最后一个帖子'记录帖子并从历史记录中恢复帖子数据。要选择比我的帖子旧的最后一个历史记录,如何选择GREATER或LESS而不是推进?
如果我这样做:
$postHistory = PostHistoryQuery::create()
->filterByPostId($post->getId())
->filterByCreated(array("max" => $post->getUpdated()))
->orderById("DESC")
->limit(1);
filterByCreated with' max'指定确实选择了最后一个'post_history'但如果再次单击“撤消”,则会选择相同的记录,因为最大值似乎指定小于或等于而不是小于。它可能需要自定义查询?我想我错过了一个我无法找到答案的技巧。到目前为止,我对答案的搜索并没有帮助。
非常感谢任何帮助。
答案 0 :(得分:2)
好的,所以我在SO上发布了一个问题寻求帮助,并在30分钟内通过尝试来解决问题。典型的,嗯?这可能对其他人有用,所以这就是我所做的:
$postHistory = PostHistoryQuery::create()
->filterByPostId($post->getId())
->filterByCreated(array("max" => $post->getUpdated()))
->orderById("DESC")
->limit(1);
更改为:
$postHistory = PostHistoryQuery::create()
->filterByPostId($post->getId())
->where('post_history.created < ?', $post->getUpdated())
->orderById("DESC")
->limit(1);
- &gt; where()子句允许您指定许多选项,例如&gt;,&lt;,LIKE等......