在 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 */
)。
我执行以下查询并获取 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
/**
* @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 */
)。