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

标签 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 因为如果尚未加载,它将去加载图像,但在这种情况,那不是我想做的。该示例是基本的,但我想做一些额外的过滤,所以我宁愿只进行自定义选择。我如何实际检查急切/延迟加载是否已完成?

最佳答案

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

关于php - Yii2 检查延迟加载是否已经完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31434798/

相关文章:

php - 我如何将 preg_match 与字母数字和 unicode 接受一起使用?

yii2 - 高级模板安装问题 [ErrorException] touch() : Utime failed: Permission denied

css - 数据 URI 图像大小(自动高度)

angularjs - 注册延迟加载的 Controller angularjs

php - FedEx 网络集成错误代码 9004

php - 限制提交表格的日期

composer-php - 致命的 : No such remote 'composer'

php - 带有 ReflectionClass 的 Yii2 模型不起作用

java - 如何测试延迟加载的 JPA 集合是否已初始化?

php - 在php文件中保存信息