在Laravel中自动删除相关行(Eloquent ORM)

在Laravel中自动删除相关行(Eloquent ORM)

当我使用以下语法删除行时:

$user->delete();

有没有办法附加各种回调,所以它会自动执行此操作:

$this->photo()->delete();

最好在模型类内。


慕斯王
浏览 584回答 3
3回答

哔哔one

注意:这个答案是为Laravel 3编写的。因此,在更新版本的Laravel中可能会或可能不会很好。您可以在实际删除用户之前删除所有相关照片。<?phpclass&nbsp;User&nbsp;extends&nbsp;Eloquent{ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;photos() &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$this->has_many('Photo'); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;delete() &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;delete&nbsp;all&nbsp;related&nbsp;photos&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->photos()->delete(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;as&nbsp;suggested&nbsp;by&nbsp;Dirk&nbsp;in&nbsp;comment, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;it's&nbsp;an&nbsp;uglier&nbsp;alternative,&nbsp;but&nbsp;faster &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Photo::where("user_id",&nbsp;$this->id)->delete() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;delete&nbsp;the&nbsp;user &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;parent::delete(); &nbsp;&nbsp;&nbsp;&nbsp;}}希望能帮助到你。
打开App,查看更多内容
随时随地看视频慕课网APP