eloquent-traits icon indicating copy to clipboard operation
eloquent-traits copied to clipboard

Traits for laravel eloquent models

Traits for Eloquent Models

Build Status License Latest Stable Version Total Downloads

This package adds the ability to use traits in you Laravel Eloquent Models

Traits list

  • Virtual Attributes
  • Attachments

Installation

This package can be used in Laravel 5.5 or higher.

composer require ponich/eloquent-traits

You can publish the migration with:

php artisan vendor:publish --provider="Ponich\Eloquent\Traits\ServiceProvider" --tag="migrations"

After the migration has been published you can create tables by running the migrations:

php artisan migrate

Traits

Virtual Attributes

Adds the ability to create virtual attributes in your model.

Use trait: \Ponich\Eloquent\Traits\VirtualAttribute

Example:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    use \Ponich\Eloquent\Traits\VirtualAttribute;

    protected $table = 'posts';

    protected $guarded = ['id'];

    public $virtalAttributes = ['tags', 'og_tags'];
}

In the property of the class $virtalAttributes list all valid virtual attributes.

$post = Post::firstOrFail(1);

$post->tags = ['tag1', 'tag2', 'tag3'];
$post->save();

$post->refresh();

var_dump($post->tags); 
/**
    array(3) {
      [0]=>
      string(4) "tag1"
      [1]=>
      string(4) "tag2"
      [2]=>
      string(4) "tag3"
    }
*/

Attachments

Allows links files to models

Use trait: \Ponich\Eloquent\Traits\HasAttachment

Example:

Model:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    use \Ponich\Eloquent\Traits\HasAttachment;

    protected $table = 'posts';

    protected $guarded = ['id'];
}

Add attachment :

$post = Post::findOrFail(1);

// by path
$post->attach('/path/to/file');

// by request
$post->attach(
    $request->file('photo')
);