微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel控制器-检查传递给控制器​​内部方法的参数是否为模型

如何解决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 举报,一经查实,本站将立刻删除。