tusimo / embed-relation
a relation for laravel
Installs: 8 474
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 1
Forks: 0
Open Issues: 0
Requires
- illuminate/container: ^5.1
- illuminate/database: ^5.1
- illuminate/events: ^5.1
- illuminate/support: ^5.1
This package is not auto-updated.
Last update: 2024-11-10 06:12:23 UTC
README
embed-relation
add a new relation is missing from Laravel's ORM. embedsMany extends Eloquent ORM .
Installation
Either PHP 5.6+ is required.
To get the latest version of embedsMany, simply require the project using Composer:
$ composer require tusimo/embed-relation
Instead, you may of course manually update your require block and run composer update
if you so choose:
{ "require": { "tusimo/embed-relation": "^0.1" } }
Usage
Within your eloquent model class add following line And when we have a json string column as data. We support virtual column and can use cast. And support some new cast, 'integer_array', 'string_array', 'float_array', 'bool_array'
class User extends Model { use \Tusimo\Eloquent\Traits\EmbedsRelation; use \Tusimo\Eloquent\Traits\CastAttributes; protected $virtualColumnMaps = [ 'data' => [ 'address' => 'home_address',//you can rename the column 'follower_ids' ], //'more_json_data' => [], ]; protected $casts = [ 'book_ids' => 'integer_array', 'home_address' => 'string', 'follower_ids' => 'integer_array', ]; ... }
Example:
Consider User has several favorite books and the book_ids just store in the user table as book_ids column. We want this column can to load use relations. So we can do it like this. We have user table just like this.
and book table like this,
class User extends Model { use \Tusimo\Eloquent\Traits\EmbedsRelation; public function books () { return $this->embedsMany(Book::class); } }
If we want to get the books so we can use$user->books
.
For now I just finished get relation data.
Next I will do the save thing And the reverse relation.
Now we can access data like this .
$user->home_address = 'HA'; $user->follower_ids = [1,2,3,4]; $user->save(); foreach($user->follower_ids as $followerId) {//which now is array type echo $followerId; } if($user->isVirtualDirty('home_address')) { //detect virtual column is dirty or not dd($user->getVirtualDirty()); }
License
The MIT License (MIT). Please see License File for more information.