首页 > 解决方案 > Laravel:将模型注入其中时销毁触发从表中选择的方法

问题描述

public function destroy(
    SubmissionType     $submissionType,
    int                $id
) {
    return response([], 200);
}

此代码触发

select * from table where id = 1 and deleted_at is null limit 1

为什么会这样?我不希望它自动运行选择查询。我想注入一个虚拟模型并编写一个测试,这种自动行为会引发 500 内部服务器错误。

标签: phplaravelunit-testing

解决方案


Laravl你有依赖注入和模型绑定。在您的情况下,这意味着您可以将模型注入到您的控件中,它会自动从数据库中获取它,这在大多数情况下都非常好。

所以想象你的路线。

submissiontypes/{submissionTypeId}

如果您按如下方式定义您的销毁方法,则不会在数据库中触发任何内容。

public function destroy(int $submissionTypeId) {

}

如果要进行模型绑定,请执行以下操作。这将告诉Laravel您在 submitTypeId 上获取您的提交类型并自动加载您的 SubmissionType 模型。

public function destroy(SubmissionType $submissionType) {

}

推荐阅读