Php 如何在有说服力的Morphottomany pivot表上侦听更改
我有3个模型(Operator1、Operator2、Operator3),它们都与PaymentMethods有一个morptomy关系。关系/透视表包含一些特定于单个运算符的附加信息。以下是一个示例模型:Php 如何在有说服力的Morphottomany pivot表上侦听更改,php,laravel,eloquent,laravel-nova,Php,Laravel,Eloquent,Laravel Nova,我有3个模型(Operator1、Operator2、Operator3),它们都与PaymentMethods有一个morptomy关系。关系/透视表包含一些特定于单个运算符的附加信息。以下是一个示例模型: class Operator1 extends Model { /** * The payment methods of the operator. */ public function paymentMethods() { re
class Operator1 extends Model
{
/**
* The payment methods of the operator.
*/
public function paymentMethods()
{
return $this->morphToMany('App\PaymentMethod', 'payable')->withPivot([
'deposit_time',
'withdrawal_time',
'deposit_fees',
'withdrawal_fees',
]);
}
}
我需要监听数据透视表上的更改。在处理与多个关系时,我可以使用->using(aPivotModelClass::class)
方法指定一个定制的透视类模型,在这里我可以监听保存
,保存
,删除
,删除
,等等有说服力的事件
我使用的不必对每个透视都这样做,但是因为我使用的是,它不会触发该包提供的事件,所以我需要手动触发它们。我是这样做的:
use Illuminate\Database\Eloquent\Relations\Pivot as EloquentPivot;
abstract class Pivot extends EloquentPivot
{
/**
* @var string
*/
public $relationName;
/**
* {@inheritDoc}
*/
public static function boot()
{
parent::boot();
static::saved(function (Pivot $model) {
$model->pivotParent->firePivotEvent('attached', true, $model->relationName, [$model->attributes]);
});
static::deleted(function (Pivot $model) {
$model->pivotParent->firePivotEvent('detached', true, $model->relationName, [$model->attributes]);
});
}
}
到目前为止,这一切都可以与belongToMany结合使用,但现在我尝试在morphotomany关系上使用->using(SomePivotModel::class)
方法。这不起作用,我得到以下错误:
local.ERROR: Call to undefined method App\Pivots\Payables::setMorphType() {"userId":1,"exception":"[object] (BadMethodCallException(code: 0): Call to undefined method App\\Pivots\\Payables::setMorphType() at /var/www/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php:50)
如果没有finally或类似的包,我怎么能监听morptomanypivot表的更新呢
相关的: