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

时间:2018-07-15 19:49:14

标签: yii yii2

在模型产品中具有该关系:

public function getDiscount()
{
    return $this->hasMany(Discount::className(), ['id' => 'available_discount']);
}

模型具有字段 available_discount ,该字段将数据存储为 1; 2; 3 ,其中 1; 2; 3 是折扣ID。< / p>

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

我如何才能将折扣与 ID 1、2、3 联系起来?

1 个答案:

答案 0 :(得分:1)

尝试一下:

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.