Php Laravel观察者创建工作但删除不工作
我试图使用Observer删除关系,但问题是,当我在创建函数中添加时,它工作正常,但当我在删除函数中添加时,它不显示任何内容(POSTMAN),这意味着对相同的内容既不工作也不出错 以下是Api: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'
$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);}