在 PhpStorm Yii2 中通过魔术方法访问字段?

Field access via magic method in PhpStorm Yii2?

我执行以下查询并获取 PartnerFilterOption 模型的对象:

$partnerFilterOption = PartnerFilterOption::find()
    ->where(['=', 'ad_filter_option_id', $filterOptionId])
    ->andWhere(['=', 'ad_partner_filter_id', $partnerFilter['id']])
    ->one();

但是如果我尝试获取模型属性,例如:

$value = $partnerFilterOption->mapping_value;

我在 PhpStorm 中遇到错误。

PHPStorm 不知道 $partnerFilterOption 变量包含什么数据类型。您应该通过 help PHPDoc comment

将此信息告知 PHPStorm
/**
 * @var PartnerFilterOption $partnerFilterOption
 */
$partnerFilterOption = PartnerFilterOption::find()
    ->where(['=', 'ad_filter_option_id', $filterOptionId])
    ->andWhere(['=', 'ad_partner_filter_id', $partnerFilter['id']])
    ->one();

P.S。您的查询可以写得更便于阅读

$partnerFilterOption = PartnerFilterOption::find()
    ->where([
         'ad_filter_option_id' => $filterOptionId,
         'ad_partner_filter_id' => $partnerFilter['id']
    ])->one();

在这种情况下,您可以使用 findOne() - PhpStorm 应该找出返回对象的类型:

$partnerFilterOption = PartnerFilterOption::findOne([
        'ad_filter_option_id' => $filterOptionId,
        'ad_partner_filter_id' => $partnerFilter['id'],
    ]);

对于需要使用 find()one() 的更复杂的条件,您需要使用 @MaximFedorov 建议的类型提示 (/* @var $partnerFilterOption PartnerFilterOption */)。