vuer / notes by vuer

Model notes.
2,507
1
1
Package Data
Maintainer Username: vuer
Maintainer Contact: rafal.szymanski@post.pl (vuer)
Package Create Date: 2016-10-06
Package Last Update: 2016-10-06
Home Page:
Language: PHP
License: MIT
Last Refreshed: 2024-02-25 03:11:23
Package Statistics
Total Downloads: 2,507
Monthly Downloads: 100
Daily Downloads: 5
Total Stars: 1
Total Watchers: 1
Total Forks: 0
Total Open Issues: 0

Notes (Laravel 5 Package)

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 : '';
  }