根据Using Model Events Listener in Laravel 5中接受的答案,以下代码应该正常工作:
class Question extends Model
{
public function answers()
{
return $this->hasMany(Answer::class);
}
// this is a recommended way to declare event handlers
protected static function boot() {
parent::boot();
// before delete() method call this
static::deleting(function($question) {
$question->answers()->delete();
});
}
}
但是,在php artisan tinker
执行以下操作后:
$q = App\Question::create()
$q->answers()->create()
$q->delete()
答案仍然存在于数据库中。似乎问题模型上的事件处理程序没有被触发。我该如何解决这个问题?
答案 0 :(得分:2)
答案 1 :(得分:1)
您应该在编码的引导操作中添加到AppServiceProvider,如此
\App\Questions::deleting(function($answers) {
$answers = Answers::where('question_id', '=', $answer->id)
->get();
foreach ($answers as $answer) {
// and here delete questions
}
});