モデルを構築し、chelout/laravel-relationship-events を使用してイベントをキャプチャしています。
次のようなモデルがあります。
class Taxonomyterm extends Model
{
use HasMorphToManyEvents, HasMorphedByManyEvents {
HasMorphedByManyEvents::newMorphToMany insteadof HasMorphToManyEvents;
}
...
public function images()
{
return $this->morphToMany(Image::class, 'imageable')->withTimestamps();
}
public function items()
{
return $this->morphedByMany(Item::class, 'taxonomytermable')->orderBy('taxonomytermables.id')->withPivot('id')->withTimestamps();
}
...
protected static function boot()
{
parent::boot();
static::morphToManyAttached(function ($relation, $parent, $ids, $attributes) {
if( $relation == 'images') {
dd('Attached MorphToMany');
}
}
static::morphedByManyAttached(function ($relation, $parent, $ids, $attributes) {
if( $relation == 'items') {
dd('Attached MorphedByMany');
}
}
}
パッケージのメンテナーから PHPドキュメントを指摘されましたが、これを機能させる正しい方法が見つからないようです。
また、newMorphToMany は 2 つのトレイト間で競合するメソッドであると想定しています。
HasMorphToManyEvents と HasMorphedByManyEvents の両方を同じモデルで動作させるために、ここから何をすべきかについて本質的に迷っています。 パッケージの元