vuer/notes

Model notes.

Maintainers

Details

github.com/vuer/notes

Source

Issues

Installs: 2 749

Dependents: 0

Suggesters: 0

Security: 0

Stars: 1

Watchers: 1

Forks: 0

Open Issues: 0

Type:utils

1.1.0 2016-10-06 11:45 UTC

This package is auto-updated.

Last update: 2024-04-23 03:42:02 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

Installation

You can install this package via composer using this command:

composer require vuer/notes

Next, you must install the service provider:

// config/app.php
'providers' => [
    ...
    Vuer\Notes\NotesServiceProvider::class,
];

Publish migration and configuration file:

php artisan vendor:publish

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

php artisan migrate

If you want you can change models in notes config file (config/notes.php):

  /*
   * The class name of the note model to be used.
   */
  'note_model' => \Vuer\Notes\Models\Note::class,

  /*
   * The class name of the author model to be used.
   */
  'author_model' => \App\User::class,

Usage

Preparing your model

To associate notes with a model, the model must implement the following trait:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Vuer\Notes\Traits\HasNotes;

class User extends Model
{
    use HasNotes;
    ...
}

Creating notes

You can create a note for the model like this:

$user = User::find(1);
$note = $user->createNote(['body' => 'Lorem ipsum...']);

To save note author you should add second parameter:

$note = $user->createNote(['body' => 'Lorem ipsum...'], \Auth::user());

If you want to save author name you need to create getNotesAuthorName method in author class. It is useful if you want to delete users and keep informations about notes authors.

<?php

namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Vuer\Notes\Traits\HasNotes;

class User extends Authenticatable
{
    use HasNotes;

    public function getNotesAuthorName()
    {
        return trim(sprintf('%s %s', $this->name, $this->surname));
    }
}

You can get all notes or 1 note:

$notes = $user->notes;
$note = $user->note;

You can use it to create model description:

  protected $fillable = [
    'description',
  ];

  public function setDescriptionAttribute($value)
  {
      $this->updateOrCreateNote([], ['body' => $value]);
  }

  public function getDescriptionAttribute()
  {
      return $this->note ? $this->note->body : '';
  }