PHPackages                             lakedawson/vocal - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. lakedawson/vocal

Abandoned → [sjdaws/vocal](/?search=sjdaws%2Fvocal)ArchivedLibrary[Database &amp; ORM](/categories/database)

lakedawson/vocal
================

Recursive functionality for Eloquent in Laravel 4 and 5

2.0.0(11y ago)432465MITPHPPHP &gt;=5.4.0

Since Apr 3Pushed 11y ago2 watchersCompare

[ Source](https://github.com/lakedawson/vocal)[ Packagist](https://packagist.org/packages/lakedawson/vocal)[ RSS](/packages/lakedawson-vocal/feed)WikiDiscussions master Synced 2d ago

READMEChangelog (10)Dependencies (4)Versions (25)Used By (0)

Vocal
=====

[](#vocal)

[![Build Status](https://camo.githubusercontent.com/3c980bcfc53a03f958d4fa1b41792e479a8657e707fad65f1ddcf3180f8341d4/68747470733a2f2f7472617669732d63692e6f72672f736a646177732f766f63616c2e706e67)](https://travis-ci.org/sjdaws/vocal) [![License](https://camo.githubusercontent.com/d99a70e73226c9a793a3d256a95b318d4eb0fdf23b68ca1fe25b286e4e1abba8/68747470733a2f2f706f7365722e707567782e6f72672f736a646177732f766f63616c2f6c6963656e73652e706e67)](https://packagist.org/packages/sjdaws/vocal) [![Latest Stable Version](https://camo.githubusercontent.com/d0c15d9f199d569523aa613fb58a6ce0283cea9fd076a04efb3261cb7ad37bce/68747470733a2f2f706f7365722e707567782e6f72672f736a646177732f766f63616c2f76657273696f6e2e706e67)](https://packagist.org/packages/sjdaws/vocal)

Extended functionality for Eloquent in Laravel 4 and 5.

Some parts of Vocal are based on [Ardent](https://github.com/laravelbook/ardent) for Laravel 4 by Max Ehsan.

Copyright (c) 2014-2015 [Scott Dawson](https://github.com/sjdaws).

Documentation
-------------

[](#documentation)

- [What is Vocal](#background)
- [Installation](#install)
- [Getting Started](#start)
- [Usage](#usage)

What is Vocal
-------------

[](#what-is-vocal)

Vocal makes working with nested relationships easier. This is especially helpful if you're displaying multiple models to a user at once, such as a user profile with an address book, and want them to be able to change their name and update their address in one go.

Installation
------------

[](#installation)

The first thing you need to do is add `sjdaws/vocal` as a requirement to `composer.json`:

```
{
    "require": {
        "sjdaws/vocal": "2.0.*"
    }
}
```

Update your packages with `composer update` and you're ready to go.

Getting Started
---------------

[](#getting-started)

Vocal extends the Eloquent base class, so your models are still fully compatible with Eloquent. Vocal simply intercepts some methods such as `validate` and `save` before they're passed to Eloquent.

To create a new Vocal model, simply make your model class extend the Vocal base class:

```
use Sjdaws\Vocal\Vocal;

class User extends Vocal {}
```

There is no need to add any Facades or Service Providers.

Usage
-----

[](#usage)

Vocal provides several settings and methods:

VariableAccess ModifierType`$allowHydrationFromInput`protectedboolean`$hashable`protectedarray`$languageFolder`protectedstring`$languageKey`protectedstring`$messages`protectedarray`$rules`publicarray`$validateBeforeSave`protectedbooleanMethodParameterscreate`$data`, `$rules`, `$messages`forceCreate`$data`forceSave`$data`forceSaveAndDelete`$data`forceSaveRecursive`$data`getErrors`$filter`getErrorBaghydrateModel`$data`save`$data`, `$rules`, `$messages`saveAndDelete`$data`, `$rules`, `$messages`saveRecursive`$data`, `$rules`, `$messages`timestamp`$value`validate`$data`, `$rules`, `$messages`validateRecursive`$data`, `$rules`, `$messages`

###  Health Score

35

—

LowBetter than 79% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity24

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity68

Established project with proven stability

 Bus Factor1

Top contributor holds 98.8% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~14 days

Total

24

Last Release

4105d ago

Major Versions

0.3.1 → 1.0.02015-01-06

1.0.1 → 4.x-dev2015-01-25

PHP version history (2 changes)0.1.4PHP &gt;=5.3.0

0.3.1PHP &gt;=5.4.0

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/659316?v=4)[Scott Dawson](/maintainers/sjdaws)[@sjdaws](https://github.com/sjdaws)

---

Top Contributors

[![sjdaws](https://avatars.githubusercontent.com/u/659316?v=4)](https://github.com/sjdaws "sjdaws (158 commits)")[![CWSpear](https://avatars.githubusercontent.com/u/495855?v=4)](https://github.com/CWSpear "CWSpear (1 commits)")[![Edwin-Luijten](https://avatars.githubusercontent.com/u/1339637?v=4)](https://github.com/Edwin-Luijten "Edwin-Luijten (1 commits)")

---

Tags

laravelvalidationeloquentlaravel5laravel4recursivehydration

### Embed Badge

![Health badge](/badges/lakedawson-vocal/health.svg)

```
[![Health](https://phpackages.com/badges/lakedawson-vocal/health.svg)](https://phpackages.com/packages/lakedawson-vocal)
```

###  Alternatives

[sjdaws/vocal

Recursive functionality for Eloquent in Laravel 4 and 5

4315.2k1](/packages/sjdaws-vocal)[watson/validating

Eloquent model validating trait.

9723.3M47](/packages/watson-validating)[tucker-eric/eloquentfilter

An Eloquent way to filter Eloquent Models

1.8k4.8M26](/packages/tucker-eric-eloquentfilter)[rutorika/sortable

Adds sortable behavior and ordering to Laravel Eloquent models. Grouping and many to many supported.

299992.5k14](/packages/rutorika-sortable)[cybercog/laravel-love

Make Laravel Eloquent models reactable with any type of emotions in a minutes!

1.2k302.7k1](/packages/cybercog-laravel-love)[cviebrock/eloquent-taggable

Easy ability to tag your Eloquent models in Laravel.

567694.8k3](/packages/cviebrock-eloquent-taggable)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
