Yii2检查是否已经完成了延迟加载

时间:2015-07-15 15:33:15

标签: php yii2 lazy-loading

所以我想知道,我想知道一个表是否已经懒惰/急切加载,而不是在我检查时实际加载它。例如:

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,因为如果它尚未加载,它将会加载图像,但在这种情况下,这不是我想要做的。这个例子是基本的,但我想做一些额外的过滤,所以我宁愿做一个自定义选择。我怎样才能真正检查是否已经完成了热切/延迟加载?

1 个答案:

答案 0 :(得分:4)

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