Haber tablosum ve ilgili news_comment tablosu var. news_comment tablosuyla ilişki haberlerini tanımladım. önbelleğe edilecektir haber tablodan veri alma olduğunuYii2: ActiveRecord ilişkileri tarafından yapılan sorguların önbelleğe alınması
$result = News::getDb()->cache(function() use($id) {
return News::find()->with('newsComment')->where(['news.id' => $id])->one();
});
Sadece sorgu: Bu sorguyu yürütmek durumunda
. İlgili tablodan seçilen sorgu değildir.
Onları ayrı ayrı yazmak zorunda kalmadan, ilgili tablolardan veri almak için yürütülen ana sorgu ve sorguları önbelleğe almak mümkün mü?
$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;
});
Sen denediniz 'joinWith' kullan? http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#joining-with-relations –
@PatrykRadziszewski evet, ve hiçbir fark yaratmıyor. – offline
Bu (birkaç hafta önce denenmiş) çalışmalıdır, aynı sorguyu 2 kez uygulandığını nasıl kontrol ettiğinizi bize bildirin. – soju