hyperf 模型的软删除功能在IDE内没有代码提示的问题与解决
in php with 0 comment

hyperf 模型的软删除功能在IDE内没有代码提示的问题与解决

in php with 0 comment

如图所示,withTrashed方法没有代码提示。

1.png

关于软删除的部分,可以参考laravel的文档:传送门,主要影响了trashedrestorewithTrashedwithoutTrashedonlyTrashed这5个方法。

withTrashed、withoutTrashed、onlyTrashed的代码提示

在对应的Model里添加下面的phpDoc方法注释来解决:

<?php

namespace App\Model;

use Hyperf\Database\Model\SoftDeletes;

/**
 * @method  \Hyperf\Database\Model\Builder withTrashed()
 * @method  \Hyperf\Database\Model\Builder withoutTrashed()
 * @method  \Hyperf\Database\Model\Builder onlyTrashed()
 */

class Test extends Model
{
    ...
}

2021.4.1更新 trashed、restore的代码提示

发现phpDoc有个@mixin,可以直接把对应类的方法添加到当前类的代码提示中,现在改为:

对应模型类中增加@mixin SoftDeletes注释

<?php

namespace App\Model;

use Hyperf\Database\Model\SoftDeletes;

/**
 * @mixin SoftDeletes
 * @method  \Hyperf\Database\Model\Builder withTrashed()
 * @method  \Hyperf\Database\Model\Builder withoutTrashed()
 * @method  \Hyperf\Database\Model\Builder onlyTrashed()
 */

class Test extends Model
{
    use SoftDeletes;

    其他代码...
}

在使用的位置用@var注释

<?php

/**
 * 【关键步骤】靠这一句来获取代码提示
 * @var $test Test
 */
$test = Test::withTrashed()->find(1);

if ($test->trashed()) {
    $test->restore();
}

终于解决啦,还是对phpDoc不熟啊。

Comments are closed.