gpt4 book ai didi

php - Yii::如何使用 CDbCriteria 作为缓存依赖

转载 作者:行者123 更新时间:2023-12-04 05:17:05 25 4
gpt4 key购买 nike

当我们使用 CDbCacheDependency 定义缓存依赖时,我们必须提供一个 SQL 作为依赖。当我们使用 CDbCriteria 时,无法提供 sql,因为 sql 是通过具有适当参数标记的标准构建的。

有什么办法可以使用 CDbCriteria 作为缓存依赖项吗?问这样的事情对吗?因为我只对 CDbCriteria 构建的 sql 感兴趣,所以我必须手动构建 sql,我认为这是不对的。

谢谢

最佳答案

从 Yii 1.1.13 开始,恐怕你会 使用 SQL 语句,并且没有直接的使用方法 CDbCriteria .

但是有一个 间接使用方法CDbCriteria ,但最终你将不得不使用它来生成一个 SQL 命令,你将把它作为你的依赖项传递。此技术使用 CDbCommandBuilder 及其方法。

示例(请参阅评论以了解):

$criteria=new CDbCriteria;
// ... replace with code to set up your criteria ...
// ...
// first create commandBuilder instance
$commandBuilder = new CDbCommandBuilder(Yii::app()->db->schema);
// then create command using criteria
$command = $commandBuilder->createFindCommand('table_name', $criteria);
// then get sql statement text
$sql = $command->text;
// then set your dependency
$dependency = new CDbCacheDependency($sql);
// if you have params in the criteria, set the params for dependency
$dependency->params = $criteria->params;

// now your dependency is usable

在上面我使用了 createFindCommand ,还有其他方法,如 createCountCommandCDbCommandBuilder , 使用一个生成你必须运行的 sql 语句。

或者,您可以使用 Query Builder ,但当然不会有任何 CDbCriteria那里。

关于php - Yii::如何使用 CDbCriteria 作为缓存依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14117870/

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