php 数据透视表中的Laravel观察器未触发

3bygqnnd  于 2023-05-16  发布在  PHP
关注(0)|答案(1)|浏览(96)

我为我的数据透视表CreatorListing创建了一个观察者,我不知道为什么它不会触发created事件。我甚至尝试了其他像creating, saving, and saved,但他们不会通过。
在我的控制器里

public function getSponsored(Listing $listing)
    {
        $this->authorize('canRequestGetSponsored', $listing);
        $listing->creators()->attach(auth()->user()->creator->id, [
            'workflow' => new ValueObjectsWorkflow(PlatformType::Google)
        ]);

        return response()->ok(null, __('Listing added. Accept the contract to continue.'));
    }

在我的列表模型中

public function creators()
    {
        return $this->belongsToMany(Creator::class)
            ->withPivot('counter_offer', 'workflow', 'is_contract_signed', 'is_accepted', 'review_status')
            ->withTimestamps()->using(CreatorListing::class);
    }

在我的观察者中,它只是一个简单的dd语句。

public function created(CreatorListing $creatorListing)
    {
        dd(1);
    }

之前,我没有添加->using(CreatorListing::class);行。代码没有显示任何错误,但它不会调用dd或观察者事件。现在我添加了这一行,它显示为Array to string conversion。我不知道我错过了什么,或者我做错了什么?
我只是按照这篇文章的参考https://mayahi.net/laravel/observe-pivot-tables-in-laravel/

mfpqipee

mfpqipee1#

public function boot()
{
    Pivot::observe(PivotObserver::class);
}

在服务提供商中添加此。此外,Pivot还应扩展Model。明确定义关系,不要让laravel猜测列。

相关问题