【发布时间】:2020-12-11 06:50:48
【问题描述】:
我正在构建一个模型并使用 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 docs,但似乎找不到正确的方法来完成这项工作。
我还假设 newMorphToMany 是两个特征之间发生冲突的方法。
我基本上不知道该怎么做才能让 HasMorphToManyEvents 和 HasMorphedByManyEvents 在同一个模型上工作。 Package this is from
【问题讨论】:
-
这样试试,如果成功我会给你更多信息..
use HasMorphToManyEvents, HasMorphedByManyEvents { HasMorphedByManyEvents::newMorphToMany as public HasMorphToManyEvents; } -
这给了我:尚未应用特征方法 newMorphToMany,因为与 App\\Taxonomyterm 上的其他特征方法存在冲突
-
实际上,我没有看到您的代码有任何错误。您当前的代码执行错误是什么?
-
任何错误信息?有任何 github 仓库可以在本地试用吗?
-
HasMorphedByMany 和 HasMorphToMany 都使用 newMorphToMany 方法并且相互冲突,因此您不能在一个模型上同时使用这两种方法。
标签: laravel polymorphic-associations laravel-7.x laravel-events