gpt4 book ai didi

php - Silverstripe SQL 逻辑

转载 作者:行者123 更新时间:2023-12-01 00:17:50 24 4
gpt4 key购买 nike

我正在尝试运行查询,但发生了一些奇怪的事情:

$return = MyCustomPage::get()->where(
" MyCustomPage.ID IN(" . implode(',', $MyCustomPageIds) . ")"
)->limit(2);

这会返回一个错误,因为它试图从 MyCustomPage_Live 而不是 MyCustomPage 获取数据。

这个逻辑一直在变化,有时它从一个表中获取,有时从另一个表中获取,我需要在查询中指定表名(例如 MyCustomPage.ID 或 MyCustomPage_Live.ID )

是否有更好的方法或任何解决方案?

最佳答案

您应该尽量避免原始 SQL 查询并利用 SilverStripe ORM相反。

因此,为了实现与 where 语句相同的效果,但是通过使用 ORM,您将编写:

$return = MyCustomPage::get()->byIDs($MyCustomPageIds)->limit(2);

这也会自动从当前阶段读取。如果你需要强制读取一个阶段,你可以使用类似的东西:

// replace 'Live' with 'Stage' to read from stage. 
Versioned::set_stage('Live');

在这些情况下,最好先存储当前阶段,然后再恢复它。

$currentStage = Versioned::get_stage(); 
Versioned::set_stage('Live');

// Do your thing…

Versioned::set_stage($currentStage);

关于php - Silverstripe SQL 逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48944939/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com