karlverger / laravel-own-assets
User assets features for Laravel Application.
Installs: 14
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Language:HTML
Requires
- laravel/framework: ^5.5||~6.0||~7.0||~8.0
Requires (Dev)
- brainmaestro/composer-git-hooks: ^2.7
- friendsofphp/php-cs-fixer: ^2.16
- laravel/framework: ^5.7
- mockery/mockery: ^1.2
- orchestra/testbench: ^3.8
- phpunit/phpunit: ~8.0
README
❤️ User assets feature for Laravel Application.
Installing
$ composer require karlverger/laravel-own-asset
Configuration
This step is optional
$ php artisan vendor:publish --provider="Karlverger\\LaravelOwnAsset\\AssetServiceProvider" --tag=config
Migrations
This step is also optional, if you want to custom assets table, you can publish the migration files:
$ php artisan vendor:publish --provider="Karlverger\\LaravelOwnAsset\\AssetServiceProvider" --tag=migrations
Usage
Traits
Karlverger\LaravelOwnAsset\Traits\Asseter
use Illuminate\Notifications\Notifiable; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Foundation\Auth\User as Authenticatable; use Karlverger\LaravelOwnAsset\Traits\Asseter; class User extends Authenticatable { use Asseter; <...> }
Karlverger\LaravelOwnAsset\Traits\Assetable
use Illuminate\Database\Eloquent\Model; use Karlverger\LaravelOwnAsset\Traits\Assetable; class Post extends Model { use Assetable; <...> }
API
$user = User::find(1); $car = Car::find(2); \Karlverger\LaravelOwnAsset\Asset $asset = $user->asset($car); $asset->addAssetProperty("clef 1","new value 1"); $asset->addAssetProperty("clef 2","new value 1"); $asset->deleteAssetProperty("clef 2"); $asset->getAssetProperty("clef 1") $user->unasset($car); $user->toggleAsset($car); $user->getAssetItems(Car::class) $user->hasAsseted($car); $car->isAssetedBy($user);
Get object asseters:
foreach($car->asseters as $user) { // echo $user->name; }
Get Asset Model from User.
Used Asseter Trait Model can easy to get Assetable Models to do what you want.
*note: this method will return a Illuminate\Database\Eloquent\Builder
*
$user->getAssetItems(Car::class); // Do more $assetCars = $user->getAssetItems(Car::class)->get(); $assetCars = $user->getAssetItems(Car::class)->paginate(); $assetCars = $user->getAssetItems(Car::class)->where('make', 'Jaguar')->get();
Get Asset Model relation pivot:
\Karlverger\LaravelOwnAsset\Asset $asset = $car->assets() ->where("assetable_type",Car::class) ->where("assetable_id",$car->id) ->where("user_id",$user->id)->first();
Aggregations
// all $user->assets()->count(); // with type $user->assets()->withType(Car::class)->count(); // asseters count $post->asseters()->count();
List with *_count
attribute:
$users = User::withCount('assets')->get(); foreach($users as $user) { echo $user->assets_count; }
Events
Event | Description |
---|---|
Karlverger\LaravelOwnAsset\Events\Asseted |
Triggered when the relationship is created. |
Karlverger\LaravelOwnAsset\Events\Unasseted |
Triggered when the relationship is deleted. |
Contributing
You can contribute in one of three ways:
- File bug reports using the issue tracker.
- Answer questions or fix bugs on the issue tracker.
- Contribute new features or update the wiki.
License
MIT (c) Karl Verger karl.verger@gmail.com