在 Yii2 中,是否可以通过另一个 hasMany 关系获取一个 hasMany 关系中的唯一对象?

问题描述 投票:0回答:1

假设我有一个

Order
模型,其中有一些关联的
Product
模型,因此
Order
中存在关系:

    public function getProducts() {
        return $this->hasMany(Product::class, ['id' => 'id_product']);
    }

一个产品

Product
可以与多个收购者相关联。所以
Product
有一个关系:

   public function getAcquisitors() {
        return $this->hasMany(Acquisitor::class, ['id' => 'id_acquisitor']);
    }

现在,是否可以在

Order
中编写一个关系,返回具有唯一
ActiveQuery
Acquisitors
?如果在
Order
我愿意:

public function getAcquisitors() {
        return $this->hasMany(Acquisitor::class, ['id' => 'id_acquisitor'])->via('products');
    }

这不会返回重复的

Acquisitor
吗?有可能让它们独一无二吗?

php yii2 foreign-keys
1个回答
0
投票

不,关系

acquisitors
不会包含重复记录。这是因为 Yii 通过这样的查询独立加载相关模型:

SELECT FROM <related table> WHERE <key> IN (<list of keys>)

当加载定义为“via”的关系时,它首先加载“via”关系中的模型,然后使用它们加载依赖关系中的模型。两种加载都是使用类似于上面提到的查询来完成的。

© www.soinside.com 2019 - 2024. All rights reserved.