jobmetric / laravel-unit
This is a unit management package for Laravel that you can use in your projects.
Installs: 16
Dependents: 0
Suggesters: 0
Security: 0
Stars: 6
Watchers: 2
Forks: 1
Open Issues: 0
pkg:composer/jobmetric/laravel-unit
Requires
- php: >=8.0.1
- jobmetric/laravel-event-system: ^2.8
- jobmetric/laravel-package-core: ^1.37
- jobmetric/laravel-translation: ^3.8
- laravel/framework: >=9.19
README
Laravel Unit Converter
Unit Management for Laravel. Flexible. Precise.
Laravel Unit Converter helps you manage and convert measurement units in a clean, consistent way—from Weight and Length to Currency, Volume, Temperature, and 30+ other unit types. It is designed to be used as a reusable package in real-world Laravel applications where unit conversion needs to be normalized and shared across multiple models.
Why Laravel Unit Converter?
Comprehensive Unit Type Support
Support for 30+ unit types out of the box:
- Physical Units: Weight, Length, Volume, Area, Temperature, Pressure, Speed, Force, Energy, Power, and more
- Digital Units: Data Storage, Data Transfer
- Scientific Units: Electric Current, Voltage, Resistance, Capacitance, Inductance, Magnetic Flux, Radiation
- Everyday Units: Currency, Time, Cooking measurements, Fuel Consumption
Flexible Base Unit System
Each unit type has a base unit (value = 1) that serves as the conversion reference. All other units in the same type are defined relative to this base, making conversions accurate and consistent.
Service-first API + Facade
The UnitConverter service provides a complete API for:
- Creating and managing units
- Converting values between units
- Changing base units dynamically
- Tracking unit usage across your application
Quick Start
Install via Composer:
composer require jobmetric/laravel-unit-converter
Run migrations:
php artisan migrate
Optionally publish config/translations (if you need to override defaults):
php artisan vendor:publish --provider="JobMetric\\UnitConverter\\UnitConverterServiceProvider"
Usage (Examples)
Store a unit using the Facade:
use JobMetric\UnitConverter\Facades\UnitConverter; $response = UnitConverter::store([ 'type' => 'weight', 'value' => 1000, // 1 kilogram = 1000 grams (if gram is base) 'status' => true, 'translation' => [ 'en' => [ 'name' => 'Kilogram', 'code' => 'kg', ], 'fa' => [ 'name' => 'کیلوگرم', 'code' => 'کیلوگرم', ], ], ]);
Convert between units:
use JobMetric\UnitConverter\Facades\UnitConverter; // Convert 5 kilograms to grams $result = UnitConverter::convert($kilogramUnitId, $gramUnitId, 5); // Result: 5000 // Or use the helper function $result = unitConvert($kilogramUnitId, $gramUnitId, 5);
Attach units to your models using traits:
use Illuminate\Database\Eloquent\Model; use JobMetric\UnitConverter\HasUnit; class Product extends Model { use HasUnit; protected array $unitables = [ 'weight' => 'weight', 'length' => 'length', 'width' => 'length', 'height' => 'length', ]; }
Assign units to a model:
$product->fill([ 'unit' => [ 'weight' => ['unit_id' => 1, 'value' => 2.5], 'length' => ['unit_id' => 2, 'value' => 30], 'width' => ['unit_id' => 2, 'value' => 20], 'height' => ['unit_id' => 2, 'value' => 10], ] ]); $product->save();
Available Artisan Commands
# List all registered units php artisan unit:list # Convert a value between units php artisan unit:convert # Export units to file php artisan unit:export # Seed default units php artisan unit:seed
Documentation
Documentation for Laravel Unit Converter is available here:
The documentation includes:
- Getting Started - Installation and configuration
- Traits -
HasUnitfor attaching units to models - Services & Facades - Complete API reference for UnitConverter
- Unit Types - All 30+ supported unit types
- Requests & Resources - Validation and API responses
- Events - Hook into lifecycle events (
UnitStoreEvent,UnitUpdateEvent,UnitDeleteEvent) - Helper Functions -
unitConvert()and more - Testing - How to run package tests and expected patterns
Contributing
Thank you for participating in laravel-unit-converter. A contribution guide can be found here.
License
The laravel-unit-converter is open-sourced software licensed under the MIT license. See License File for more information.