php - Yii2:如何缓存 ActiveRecord 关系所做的查询

标签 php caching activerecord yii2 query-cache

我有新闻表及其相关的新闻评论表。 我已经用 news_comment 表定义了关系 newsComment。

如果我执行这个查询:

$result = News::getDb()->cache(function () use($id) {
    return News::find()->with('newsComment')->where(['news.id' => $id])->one();
});

只有从新闻表中获取数据的查询才会被缓存。从相关表中选择的查询不是。

是否可以同时缓存主查询和为从相关表中检索数据而执行的查询,而不必单独编写它们?

最佳答案

试试这个:

$db = News::getDb();
$result = $db->cache(function ($db) use ($id) {
  $query = new \yii\db\Query;
  $query->select("news.*,newsComment.*") // write table name for newsComment model and also in join
        ->from('news')
        ->leftjoin('newsComment','newsComment.id=news.product_id')
        ->where(['news.id' => $id])
        ->one();

  $command = $query->createCommand();
  $result  = $command->queryAll();

  return $result;

});

关于php - Yii2:如何缓存 ActiveRecord 关系所做的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37253824/

相关文章:

php - 缩短 MySQL 代码以获取基于变量的更多信息

android - 如何解决此问题错误 : Couldn't resolve the package?

ruby-on-rails - 遗留连接不可用时无法运行测试

ruby-on-rails - Rails where() 和时区

php - 在字符串中查找空格并在其后追加字符

php - 获取php安装路径的方法

"use runtime optimized javascript and css resources"时在 XPage 中缓存 CSS 和 JS 资源

c# - ASP.net 缓存 ASHX 文件服务器端

ruby-on-rails - 升级到 Ruby 2.2 后的 Rails 3 ActiveRecord #size 方法错误

php - 为什么 SUM (`column` ) 返回一个字符串而不是一个整数?