bouleluciole/laravel-eloquent-traits 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

bouleluciole/laravel-eloquent-traits

最新稳定版本:0.1

Composer 安装命令:

composer require bouleluciole/laravel-eloquent-traits

包简介

Reusable Eloquent traits for UUID, ULID, Slugs and more

README 文档

README

Une collection de traits Eloquent robustes et configurables pour automatiser les tâches répétitives de vos modèles Laravel : gestion des médias (compression, miniatures, nettoyage), slugs uniques et identifiants UUID.

🚀 Installation

Installez le package via Composer :

composer require bouleluciole/laravel-eloquent-traits

Le package nécessite PHP 8.2+ et Laravel 11.0+. Les fonctionnalités d'image dépendent de intervention/image (v3).

🛠 Fonctionnalités

1. Compression d'Images (CompressImage)

Compresse intelligemment vos images au format WebP pour économiser de l'espace disque tout en préservant la qualité.

use EloquentTraits\Traits\CompressImage;

class Post extends Model
{
    use CompressImage;

    // Champs à compresser (clé => disque ou simplement valeur si disque par défaut)
    protected $compressibleImageFields = [
        'photo_path' => 'public',
        'avatar'
    ];

    // Taille maximale autorisée en Ko (défaut: 500)
    protected $imageCompressionMaxSize = 800;
}

2. Génération de Miniatures (GeneratesThumbnail)

Génère automatiquement des thumbnails WebP lors de la sauvegarde. Supporte les fichiers locaux et les URLs distantes.

use EloquentTraits\Traits\GeneratesThumbnail;

class Photo extends Model
{
    use GeneratesThumbnail;

    protected $thumbnailConfig = [
        [
            'source' => 'photo_path',
            'target' => 'thumbnail',
            'width'  => 300,
            'height' => 200,
            'prefix' => 'thumbnails/posts/'
        ]
    ];
}

3. Nettoyage Automatique (DeletesFilesOnModel)

Supprime physiquement les fichiers du stockage lorsque le modèle est supprimé ou lorsqu'un champ de fichier est mis à jour. Gère nativement le SoftDeletes.

use EloquentTraits\Traits\DeletesFilesOnModel;

class Document extends Model
{
    use DeletesFilesOnModel;

    // Champs contenant des chemins de fichiers
    protected $fileFields = ['file_path', 'attachment'];

    // Disques à scanner pour la suppression
    protected $fileDisks = ['public', 's3'];
}

4. Slugs Uniques (GeneratesSlug)

Génère des slugs URL-friendly uniques. Si un slug existe déjà, il ajoute automatiquement un suffixe incrémental (ex: titre, titre-2, etc.).

use EloquentTraits\Traits\GeneratesSlug;

class Article extends Model
{
    use GeneratesSlug;

    protected string $slugSourceField = 'title'; // Défaut: 'name'
    protected string $slugColumn = 'slug';       // Défaut: 'slug'
}

5. Identifiants UUID (UseUuid)

Remplace les IDs incrémentaux par des UUIDs version 4 générés automatiquement.

use EloquentTraits\Traits\UseUuid;

class Order extends Model
{
    use UseUuid;

    // Désactive l'auto-incrémentation pour ce modèle
    public $incrementing = false;
    protected $keyType = 'string';
}

🧪 Tests

Le package est testé avec Pest PHP et utilise Orchestra Testbench pour simuler un environnement Laravel complet.

composer test

📖 Détails Techniques

Cycle de vie (Events)

Les traits utilisent les hooks standards d'Eloquent (creating, saving, saved, deleting, updating) pour agir au bon moment sans intervention manuelle.

Gestion du stockage

Tous les traits de fichiers respectent l'abstraction du système de fichiers de Laravel (Storage). Ils sont compatibles avec les disques local, public, s3, etc.

📄 Licence

Ce projet est sous licence MIT. Pour plus d'informations, veuillez consulter le fichier LICENSE.

🤝 Contribution

Les contributions sont les bienvenues !

  1. Forkez le projet.
  2. Créez votre branche de fonctionnalité (git checkout -b feature/AmazingFeature).
  3. Commitez vos changements (git commit -m 'Add some AmazingFeature').
  4. Pushez sur la branche (git push origin feature/AmazingFeature).
  5. Ouvrez une Pull Request.

Développé avec ❤️ par Boule Luciole - bouleluciole@gmail.com

统计信息

  • 总下载量: 1
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-01-05