此包已被废弃,不再维护。作者建议使用always-open/sidekick包。

一组辅助类,使战斗变得更加容易

v4.1.9 2023-08-15 17:34 UTC

README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads Maintainability

一组辅助类,使战斗变得更加容易。

安装

您可以通过composer安装此包

composer require always-open/sidekick

版本支持

Sidekick版本 PHP版本
1.x PHP 7.4和8.x
4.x PHP 8.x+

用法

辅助类

字符串辅助类

$ids = AlwaysOpen\Helpers\Strings::stringIdsToCollection('1,3,45, asdf,66,1,45,3');
var_dump($ids);

路由辅助类

此辅助类阻止了重定向循环,当使用url()->previous()时可能会出现,但用户可能直接输入了URL,所以previouscurrent是相同的。此辅助类阻止这种情况发生,同时允许您指定如果发生这种情况应去哪里。

如果用户可以编辑用户资料,并从多个屏幕访问它,则保存后的重定向响应可能如下所示

return response()->redirectTo(
    AlwaysOpen\Helpers\Routes::toRouteIfBackIsLoop('user.report')
);

在这种情况下,用户将转到其之前的URL或被发送到用户报告。

特性

ByName

将特性添加到您的模型中

<?php

namespace App\Models;

namespace AlwaysOpen\Sidekick\Models\Traits\ByName;

class OrderStage extends Model
{
    use ByName;
    
    const NEXT_DAY = 'Next Day';
   ...
}

使用特性通过名称获取模型

$overnight = OrderStage::byName('overnight');

当您使用常量执行工作时会表现得很好

$overnight = OrderStage::byName(OrderStage::NEXT_DAY);

CascadeUpdate

如果您需要更新相关模型(如父子关系或文档上的行项)上的最后更新时间戳,则此特性很好。

在示例类Docuemnt中,有多个LineItem实例作为子项。

在此示例中,您需要重写getRelationshipsToUpdate方法

class LineItem extends Model
{
    use CascadeUpdate;

    public function getRelationshipsToUpdate() : array
    {
        return [
            'Document',
        ];
    }

    public function CascadeUpdate() : HasOne

当行项实例被保存时,拥有者Document上的UPDATED_AT列也会被更新。

Ordered

此特性确保所有实例都有一个按顺序排列的排序列值。未来的TODO是当其中一个排序值被更新时更新其他实例,以保持所有实例的正确顺序。

测试

composer test

变更日志

有关最近更改的更多信息,请参阅CHANGELOG

贡献

有关详细信息,请参阅CONTRIBUTING

安全漏洞

请查看如何报告安全漏洞的我们的安全策略

鸣谢

许可协议

MIT 许可协议 (MIT)。更多信息请参阅许可文件