Yii 使用复合字段创建关系hasMany()

Yii 使用复合字段创建关系hasMany(),yii,yii2,Yii,Yii2,在型号产品中有关系: public function getDiscount() { return $this->hasMany(Discount::className(), ['id' => 'available_discount']); } 模型具有字段可用\u折扣,该字段将数据存储为1;2.3,其中1;2.3是折扣ID 查询Product::find()->joinWith('discount d')->where(['d.id'=>[1,2,3]])->all()返

在型号产品中有关系

public function getDiscount()
{
    return $this->hasMany(Discount::className(), ['id' => 'available_discount']);
}
模型具有字段可用\u折扣,该字段将数据存储为1;2.3,其中1;2.3是折扣ID

查询
Product::find()->joinWith('discount d')->where(['d.id'=>[1,2,3]])->all()
返回带有键discount=[]的产品

我如何返回与ID1,2,3相关的折扣?

试试以下方法:

public function getDiscounts()
{
    $idsAsArray = explode(';', $this->available_discount);
    $query = Discount::find()->where(['id' => $idsAsArray]);
    $query->multiple = true;
    return $query;
}
然后通过:

$product->discounts; // returns Discount[]
$product->getDiscounts()->count(); // gets the count of discount models.

请注意,这不是一个真实的关系,您不能将其用于即时加载或联接。但这可能是你能从OP的计划中得到的最好的结果。