Php Laravel观察者创建工作但删除不工作

Php Laravel观察者创建工作但删除不工作,php,laravel,laravel-5,Php,Laravel,Laravel 5,我试图使用Observer删除关系,但问题是,当我在创建函数中添加时,它工作正常,但当我在删除函数中添加时,它不显示任何内容(POSTMAN),这意味着对相同的内容既不工作也不出错 以下是Api: $api->post('store','App\Http\Controllers\CustomerController@store'); $api->delete('delete/{id}','App\Http\Controllers\CustomerController@destroy'

我试图使用Observer删除关系,但问题是,当我在创建函数中添加时,它工作正常,但当我在删除函数中添加时,它不显示任何内容(POSTMAN),这意味着对相同的内容既不工作也不出错

以下是Api:

$api->post('store','App\Http\Controllers\CustomerController@store');
$api->delete('delete/{id}','App\Http\Controllers\CustomerController@destroy');
这是artisan制作的观察者文件

namespace App\Observers;

use App\Customer;

class CustomerObserver
{
    public function created(Customer $customer)
    {
        dd($customer);  
    }

    public function deleted(Customer $customer)
    {
        dd($customer); 
    }
}
这是客户控制员

class CustomerController extends Controller
{
    public function store(Request $request)
    {
        return Customer::store($request->person);
    }

    public function destroy($id)
    {
       $delete = Customer::where('person_id',$id);
       $delete->delete();
    }
}
这是客户模型文件

class Customer extends Model
{
    //Relationship Start From Here
    public function person()
    {
        return $this->belongsTo(Person::class);
    }

    //End Here

    public static function store($request)
    {
        //Call to Person Model And Save User
        $user = Person::store($request);

        //Create object of Customer Model
        $customer = new Customer();
        $customer->fill($request['customers']);
        $customer->person()->associate($user)->save();

        //return customer 
        return $customer;
    }
}
你能做所有的事情吗

1在
Customer::observe(CustomerObserver::class)中添加行boot
方法中的CustomerServiceProvider中的code>

  • 在provider数组中的app.php文件中添加
    CustomerServiceProvider

  • composer转储自动加载

  • php-artisan-config:cache


  • 我也遇到了这个问题,但是我从存储库中调用了delete方法,这可以防止触发观察者的deleted事件。当我使用“从模式中删除”时,它工作正常。

    我知道这可能是一个延迟回复,不确定您是否仍在寻找答案。我认为问题在于如何删除您的
    客户
    型号

    当你做这样的事情时

    $delete=Customer::where('person\u id',$id);
    $delete->delete();
    
    您正在执行大规模删除语句。如中所述,
    mass deletes不会为已删除的模型触发任何模型事件
    这就是您的
    deleted
    观察者事件未触发的原因

    当通过Eloquent执行mass delete语句时,删除的模型不会触发deleting和deleted model事件。这是因为在执行delete语句时,从未实际检索模型

    现在看看如何创建
    客户
    。一次创建一个模型。因此,您创建的
    观察者确实会运行

    //创建客户模型的对象
    $customer=新客户();
    $customer->fill($request['customers');
    $customer->person()->associate($user)->save();
    
    要解决您的问题,最简单的方法是检索所有模型并逐个删除,以便触发事件

    foreach(Customer::where('person\u id',$id)->get()作为$delete){
    $delete->delete();
    }
    
    已更改,但问题与检查此功能是否工作的其他方法相同。。。。。如果然后为其他模型编写代码公共函数删除(Customer$Customer){dd($Customer);}我尝试了PersonObserver和Person模型,但也有同样的问题,谢谢先生,很抱歉更新太晚。。。。。。我使用了config:cache和usesoftdeletes@Minkzsingh没有问题。删除
    没有
    客户
    dd()
    谢谢回复。。我也尝试过这个,但同样没有回应,如果我在CustomerServiceProvider中添加DD,然后显示DD。。。公共静态函数boot(){dd(1);Customer::observe(CustomerObserver::class);}