Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 为什么';调用t模型事件处理程序';s删除?_Laravel_Laravel 5_Eloquent_Laravel 5.2 - Fatal编程技术网

Laravel 为什么';调用t模型事件处理程序';s删除?

Laravel 为什么';调用t模型事件处理程序';s删除?,laravel,laravel-5,eloquent,laravel-5.2,Laravel,Laravel 5,Eloquent,Laravel 5.2,根据中接受的答案,以下代码应正常工作: 类问题扩展模型 { 公共职能部门答覆() { 返回$this->hasMany(答案::class); } //这是声明事件处理程序的推荐方法 受保护的静态函数启动(){ 父::boot(); //在delete()方法调用之前 静态::删除(函数($question){ $question->answers()->delete(); }); } } 但是,在php artisan tinker中执行以下操作后: $q=App\Question::cre

根据中接受的答案,以下代码应正常工作:

类问题扩展模型
{
公共职能部门答覆()
{
返回$this->hasMany(答案::class);
}
//这是声明事件处理程序的推荐方法
受保护的静态函数启动(){
父::boot();
//在delete()方法调用之前
静态::删除(函数($question){
$question->answers()->delete();
});
}
}
但是,在php artisan tinker中执行以下操作后:

$q=App\Question::create()
$q->answers()->create()
$q->删除()

答案仍然存在于数据库中。似乎问题模型上的事件处理程序没有被触发。如何解决这个问题?

首先,如果可以的话,我会给出一个评论

嗨,据我所知,只有在明确删除每个模型时才会触发删除事件


中的回答中,首先,如果可以的话,我会用评论来回答

嗨,据我所知,只有在明确删除每个模型时才会触发删除事件


中的回答中,您应该在启动操作中向AppServiceProvider添加代码,如下所示

\App\Questions::deleting(function($answers) {
           $answers = Answers::where('question_id', '=', $answer->id)
                   ->get();
           foreach ($answers as $answer) {
               // and here delete questions
           }

       });

您应该在代码中的引导操作中添加到AppServiceProvider,如下所示

\App\Questions::deleting(function($answers) {
           $answers = Answers::where('question_id', '=', $answer->id)
                   ->get();
           foreach ($answers as $answer) {
               // and here delete questions
           }

       });

尝试在
static::deleted
instead@HugoS.Mendes谢谢你的回复。在
static::deleted
instead@HugoS.Mendes谢谢你的回复。我试过了,但没有找到答案。显式删除意味着什么?您必须逐个元素进行删除。示例:
static::deleting(函数($question){foreach($question->answers()->get()as$answer){$answer->delete();}})谢谢你的回答。显式删除意味着什么?您必须逐个元素进行删除。示例:
static::deleting(函数($question){foreach($question->answers()->get()as$answer){$answer->delete();}})