这个问题是在问题here之后提出的和here.我最近升级到Propel1.5,并开始使用它在Criteria上的查询功能。我有一个无法翻译的查询-具有多个条件的左连接:SELECT*FROMpersonLEFTJOINgroup_membershipONperson.id=group_membership.person_idANDgroup_id=1WHEREgroup_membership.person_idisnull;它的目的是找到所有不在指定组中的人。以前我使用以下代码来完成此操作:$criteria->addJoin(array(self::ID,GroupMembershi
我有以下(简化的)数据库结构:表格书籍idtitle表格页面idbookIdnumber表图idpageIdpage.bookId和figure.pageId是指向主键book.id和page.id分别。一本书可以没有页面,一页可以没有数字。对于指定的图书ID,使用单个sql查询,我想检索图书信息包含各自信息的页面列表每页的图数结果的示例JSON表示如下:{"id":34,"title":"Thetitle""pages":[{"id":"44","number":1"figureCount":2},{"id":"45","number":2"figureCount":5},...]}
在我使用Symfony1.4/Propel1.4的查询中,出于分页目的,我需要像这样设置限制Page1:LIMIT0,6Page2:LIMIT6,6Page3:LIMIT12,6....&soon我试试$c->setLimit(6);正在生成LIMIT6我也没有找到具有两个参数或类似功能的setLimit方法来设置起始限制。这是非常常见的操作,我确定在Propel中必须可用,但直到现在我还无法弄清楚。有人可以建议如何设置所需的限制(LIMIT0,6) 最佳答案 您应该使用limit()和offset(),描述here.为了LIMIT
我想像这样过滤结果$searchDate="2013-03-01";$query->usePublicationQuery()->filterByPublishedAt($searchDate)->endUse();但是,问题是,此列中的值还包含时间,即它们实际上是时间戳(例如“2013-03-0108:27:12”),我不允许更改它在架构中。那么我怎么可能匹配忽略时间的纯日期呢?以上查询仅匹配时间为2013-03-0100:00:00的条目。但我想要所有日期为2013-03-01的条目,而不考虑时间。 最佳答案 我已经找到了这个解
我在尝试使用PropelORM从symfony项目中的现有数据库构建模型时遇到错误。错误是这样的:build-propel.xml:474:20:The1:1relationshipexpressedbyforeignkeya_table_on_my_schema_FK_1isdefinedinbothdirections;Propeldoesnotcurrentlysupportthis(ifyoumusthavebothforeignkeyconstraints,consideraddingthisconstraintwithacustomSQLfile.)schema.yml文件
关于使用toArray()时添加到数组中的内容,我似乎无法确定确切的经验法则,以至于如果我要执行以下操作:$sheep=SheepQuery::create()->find();foreach($sheepas$sheepii){$sheepii->getShepherd();}return$sheep->toArray();或它的一些变体,有时我似乎从羊表和它们与牧羊人的子数组中得到结果,但有时它似乎不包括它,所以我必须做一些事情,比如在循环时将值添加到新数组。任何人都可以指出(解释链接)为什么会发生这种情况及其背后的规则,这样我就不会盲目猜测,如果有更好的方法来做同样的事情,我愿意
我有一个长时间运行的作业,使用Propel2构建。但是,有时它会因臭名昭著的mysqlserverhasgoneaway错误而崩溃。我想通过重新连接到服务器来从这个错误中恢复过来,也许等几秒钟之后。有谁知道如何在连接丢失后强制Propel重新连接?我没有从Propel中找到如何执行此操作的任何线索。或PDOAPI。 最佳答案 我在结合laravel队列时遇到了这个问题。queue:work守护进程是进程,超时后不会自行重连。也尝试了持久连接,但没有帮助。我现在解决这个问题的方法有点特定于队列/laravel,但也可能会帮助您找到解决
我正在使用自定义SQL连接两个表,将一些业务逻辑应用到日期,然后使用结果来组合推进对象(集合)。这是我的代码:$testtypes=TesttypeQuery::create()->find();foreach($testtypesas$testtype){/*workoutwhatmostrecentschedule*/$con=\Propel::getConnection(SchedulePeer::DATABASE_NAME);$sql="SELECT`schedule`.*,(`schedule`.`last`+INTERVAL`duration`.`weeks`WEEK+IN
我是propel的新手,我正在寻找一种方法来增加我的MySQL数据库中的值,而无需执行完整的读取-更新-写入循环。比如这样:UPDATEbooksSETpopularity=popularity+1WHEREid=123当然可以:$book=newBookQuery::create()->findPk(123);$book->setPopularity($book->getPopularity()+1);$book->save();但这会导致2个查询(SELECT和UPDATE)。在Propel中有没有一种巧妙的方法来做到这一点? 最佳答案
我在我的php项目中使用Composer配置Propel时遇到问题。这是我的树目录的样子:project/|--/public_html/index.php|--/app/||--data/|||--propel.json|||--schema.xml||--vendor/||--composer.json在/data/文件夹中,我将存储我所有的propel文件,即generated-classes/、generated-conf/和generated-sql/。为了实现这个目的,在/data/文件夹中有一个终端,我按以下顺序输入命令:$propelsql:build$propelmo