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

Yii2 check to see if lazy loading has been done already

所以我想知道,我想看看 table 是否已经 lazy/eager 加载,而不是在我检查时实际加载它。例如:

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) 它总是 return true 因为如果它还没有加载它会去加载图像,但在这种情况下,那不是我想要做。这个例子是基本的,但我想做一些额外的过滤,所以我宁愿只做一个自定义 select。我怎样才能真正检查 eager/lazy 加载是否已经完成?

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