对于$item
,存在多态loggable
关系。在数据库中,它被存储在items
中,作为loggable_type
和loggable_id
(对于PHP 8+和Laravel)。
for($items as $item) {
// ...
if ($item->loggable_type === Comment::class) {
$item->loggable->resetDates();
}
// ...
}
字符串
我尝试输入提示,条件中的loggable
是Comment
。我想我可能可以使用@var
,但做一些像/* @var $item->loggable Comment */
不工作,我不能做/* @var $item Comment */
,因为它设置为$item
,而不是它的属性。
我正在考虑将条件更改为if ($item->loggable instance of Comment)
,但我宁愿不这样做,因为即使不使用,也需要加载和创建注解。
有没有办法把hint $item->loggable
写成Comment
?
2条答案
按热度按时间j9per5c41#
将其赋值给变量
字符串
gjmwrych2#
正如@Justinas所说,将其分配给一个变量:
字符串
或者在模型本身上设置可能的值(如果它们是固定的和已知的),如下所示:
型
这将告诉IDE属性
loggable
可能是Comment
对象、WhateverModel
对象或Model
对象(因此您仍然可以使用普通Model的方法自动完成)。如果您可以缩小您可以在那里拥有的类的范围,那么添加它们,否则我将使用第一个选项(分配一个值并使用PHPDoc块作为变量)