friendsofhyperf/model-morph-addon

The model morph addon for Hyperf.

Maintainers

πŸ‘ huangdijia

Package info

github.com/friendsofhyperf/model-morph-addon

Issues

Documentation

pkg:composer/friendsofhyperf/model-morph-addon

Fund package maintenance!

huangdijia

hdj.me/sponsors

Statistics

Installs: 21 432

Dependents: 0

Suggesters: 0

Stars: 1

v3.2.1 2026-06-09 14:51 UTC

Requires

Requires (Dev)

None

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 5025756be20c536ddc1f6b3450eb3d5b88692682

  • huangdijia <huangdijia.woop@gmail.com>

hyperfv3.2


README

δΈ­ζ–‡θ―΄ζ˜Ž

πŸ‘ Latest Stable Version
πŸ‘ Total Downloads
πŸ‘ License

The model morph addon for Hyperf.

Installation

composer require friendsofhyperf/model-morph-addon

Before

<?php
namespace App\Model;

class Image extends Model
{
 public function imageable()
 {
 return $this->morphTo();
 }
}

class Book extends Model
{
 public function images()
 {
 return $this->morphMany(Image::class, 'imageable');
 }
}

class User extends Model
{
 public function images()
 {
 return $this->morphMany(Image::class, 'imageable');
 }
}

// Global
Relation::morphMap([
 'user' => App\Model\User::class,
 'book' => App\Model\Book::class,
]);

After

<?php
namespace App\Model;

class Image extends Model
{
 public function imageable()
 {
 return $this->morphTo();
 }

 // Privately-owned
 public static function getActualClassNameForMorph($class)
 {
 $morphMap = [
 'user' => User::class,
 'book' => Book::class,
 ];

 return Arr::get($morphMap, $class, $class);
 }
}

class Book extends Model
{
 public function images()
 {
 return $this->morphMany(Image::class, 'imageable');
 }

 public function getMorphClass()
 {
 return 'book';
 }
}

class User extends Model
{
 public function images()
 {
 return $this->morphMany(Image::class, 'imageable');
 }

 public function getMorphClass()
 {
 return 'user';
 }
}

Contact

License

MIT