Skip to content

Commit 9ebc60c

Browse files
committed
Update README.md
1 parent aa17801 commit 9ebc60c

File tree

1 file changed

+74
-1
lines changed

1 file changed

+74
-1
lines changed

README.md

Lines changed: 74 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ Laravel meta 2 has some backward incompatible changes that listed below:
6666

6767
#### Migration Table Schema
6868

69+
Each model needs its own meta table.
70+
6971
This is an example migration. you need change parts of it.
7072

7173
In this example we assume you have a model named `Post`.
@@ -344,7 +346,7 @@ $post->getMeta(['content', 'views'],'none');// result if the metas are missing:
344346
$post->getMeta(['content', 'views']);// result if the metas are missing: ['content'=>null,'views'=>null]
345347
```
346348

347-
#### Disable fluent access
349+
#### Disable Fluent Access
348350

349351
If you don't want to access metas in fluent way, you can disable it by adding following property to your model:
350352

@@ -408,3 +410,74 @@ You can also use it on eloquent relations.
408410
/* Post model */
409411
public $hideMeta = true; // Do not add metas to array
410412
```
413+
414+
## Events
415+
416+
Laravel meta dispatches several events, allowing you to hook into the following events: `metaCreating`, `metaCreated`, `metaSaving`, `metaSaved`, `metaUpdating`, `metaUpdated`, `metaDeleting` and `metaDeleted`. Listeners should expect two parameters, first an instance of the model and second, name of the meta that event occurred for it. To enable events you need to add `HasMetaEvents` trait to your model:
417+
418+
```php
419+
use Kodeine\Metable\Metable;
420+
use Kodeine\Metable\HasMetaEvents;
421+
use Illuminate\Database\Eloquent\Model;
422+
423+
class User extends Model
424+
{
425+
use Metable,HasMetaEvents;
426+
}
427+
```
428+
429+
After that, you can listen for events the [same way](https://laravel.com/docs/master/eloquent#events) you do for models.
430+
431+
> If you `return false;` in listener of any event ending with `ing`, that operation will be aborted.
432+
433+
There are 3 ways to listen for events:
434+
435+
#### 1. By Defining `$dispatchesEvents` Property
436+
437+
```php
438+
use App\Events\UserMetaSaved;
439+
use Kodeine\Metable\Metable;
440+
use Kodeine\Metable\HasMetaEvents;
441+
use Illuminate\Database\Eloquent\Model;
442+
443+
class User extends Model
444+
{
445+
use Metable,HasMetaEvents;
446+
447+
protected $dispatchesEvents = [
448+
'metaSaved' => UserMetaSaved::class,
449+
];
450+
}
451+
```
452+
453+
#### 2. [Using Closures](https://laravel.com/docs/master/eloquent#events-using-closures)
454+
455+
```php
456+
use Kodeine\Metable\Metable;
457+
use Kodeine\Metable\HasMetaEvents;
458+
use Illuminate\Database\Eloquent\Model;
459+
460+
class User extends Model
461+
{
462+
use Metable,HasMetaEvents;
463+
464+
protected static function booted()
465+
{
466+
static::metaCreated(function ($user, $meta) {
467+
//
468+
});
469+
}
470+
}
471+
```
472+
473+
#### 3. [Observers](https://laravel.com/docs/master/eloquent#observers)
474+
475+
```php
476+
class UserObserver
477+
{
478+
public function metaCreated(User $user,$meta)
479+
{
480+
//
481+
}
482+
}
483+
```

0 commit comments

Comments
 (0)