【问题标题】:Yii2 check to see if lazy loading has been done alreadyYii2 检查延迟加载是否已经完成
【发布时间】:2015-07-19 01:05:53
【问题描述】:

所以我想知道,我想看看一个表是否已经被延迟/急切地加载,而在我检查时没有实际加载它。例如:

class Listing extends \yii\db\ActiveRecord {

    public function getListingImages()
    {
        return $this->hasMany(ListingImage::className(), ['listing_id' => 'id'])->orderBy(['position' => SORT_ASC]);
    }


    public function getCoverImage()
    {
        if (isset($this->listingImages)) {
            return $this->listingImages[0];
        }

        // Find cover image
    }
}

所以当我执行isset($this->listingImages) 时,它总是会返回true,因为如果它尚未加载,它将去加载图像,但在这种情况下,这不是我想要做的。该示例是基本的,但我想做一些额外的过滤,所以我宁愿只做一个自定义选择。我如何才能真正检查是否已完成急切/延迟加载?

【问题讨论】:

    标签: php yii2 lazy-loading


    【解决方案1】:

    您可以使用 ActiveRecord 类的isRelationPopulated() 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-15
      • 2012-01-07
      • 2016-10-05
      • 2018-02-09
      • 2012-04-03
      • 2019-05-25
      • 1970-01-01
      相关资源
      最近更新 更多