如何解决Laravel控制器-检查传递给控制器内部方法的参数是否为模型
基本上,我要做的就是检查传递给该方法的对象是否是模型。不管模型是什么,我只想确保它是一个模型。因此,我尝试使用Model $resource
强制转换$ resource变量/参数,但这返回了错误。
传递给App \ Http \ Controllers \ Handlers \ FileUploadHandler :: replaceFile()的参数1必须是App \ Http \ Controllers \ Handlers \ Model的实例,App \ Models \ Resource \ Ingredient的实例,在E中调用:第109行的\ Sites \ kara \ app \ Http \ Controllers \ Resources \ IngredientsController.PHP
这是我的方法:
// Handle File Replacement
public static function replaceFile( $resource,Request $request,$storageFolder = 'nopath',$formName = 'fileUpload') {
// Delete the old file
Storage::delete($resource->fullPath);
// Place the new file
return self::uploadFile($request,$storageFolder,$formName);
}
这是我的称呼方式:
// Create the object
$ingredient = Ingredient::where('id',$id)->first();
$file = FileUploadHandler::replaceFile($ingredient,$request,'ingredients');
解决方法
要检查某个变量是否指向Model
,可以使用instanceof
。
示例:
<?php
class A{};
class B extends A{};
$obj = new B();
if ($obj instanceof A) {
echo 'yes';
}
输出:yes
想通了:
您必须在use语句中添加Illuminate\Database\Eloquent\Model
类。
因此,当您致电Model $resource
时,它将返回OK。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。