调用未定义的方法 Illuminate\Database\Eloquent\Builder::getAbsolutePath() [重复]

Posted

技术标签:

【中文标题】调用未定义的方法 Illuminate\\Database\\Eloquent\\Builder::getAbsolutePath() [重复]【英文标题】:Call to undefined method Illuminate\Database\Eloquent\Builder::getAbsolutePath() [duplicate]调用未定义的方法 Illuminate\Database\Eloquent\Builder::getAbsolutePath() [重复] 【发布时间】:2019-11-04 09:32:24 【问题描述】:

我有点困惑,我得到Call to undefined method Illuminate\Database\Eloquent\Builder::getAbsolutePath() (View: C:\Users\rust\Desktop\projectName\resources\views\container\index.blade.php)

我的ContainerController.php 中的show 方法看起来像这样:

public function show($args = '')
    
        if($document = Document::where('key', $args)->first()) 
            return response()->download(storage_path('app'). DIRECTORY_SEPARATOR . $document->getAbsolutePath());
        

        $items = explode('/', $args);
        $department = Auth::user()->department;

        if (Auth::user()->hasRole('Root')) 
            $department = Department::where('slug', '=', $items[0])->first();
            $items = array_slice($items, 1);
        

        if($department == null) 
            return redirect('/');
        

        if(file_exists(storage_path('app' . DIRECTORY_SEPARATOR . $department->slug . DIRECTORY_SEPARATOR . implode(DIRECTORY_SEPARATOR, $items)))
            && !is_dir(storage_path('app' . DIRECTORY_SEPARATOR . $department->slug . DIRECTORY_SEPARATOR . implode(DIRECTORY_SEPARATOR, $items)))) 

            return response()->file(storage_path('app' . DIRECTORY_SEPARATOR . $department->slug . DIRECTORY_SEPARATOR . implode(DIRECTORY_SEPARATOR, $items)));
        

        $current_parent = 0;
        foreach ($items as $item) 
            $container = Container::where('slug', '=', $item)
                ->where('parent_id', '=', $current_parent)
                ->where('department_id', '=', $department->id)
                ->first();
            if(!$container) abort(404);
            $current_parent = $container->id;
        

        $contents = Container::where('parent_id', '=', $current_parent)
            ->where('department_id', "=", $department->id)
            ->get();
        if (!($container = Container::find($current_parent))) 
            $container = $department;
        

        return view('container.index', compact('container', 'contents', 'args'));
    

我不知道我做错了什么,但我现在有点迷茫

【问题讨论】:

你能告诉我们你的container/index.blade.php吗? 它说您的错误在视图中,您是否在视图中进行任何调用? 应该不言而喻,但请不要破坏您的问题。否则它将被回滚。 @rust 那是因为您的问题有答案,并且该答案已被积极接受。能够在事后删除问题对于 Vikash 试图帮助您解决这个问题所花费的时间是不公平的。您可以找到能够自删除问题的条件on the help pages 【参考方案1】:

在您的代码中...$document 是 laravel 集合..不是文件对象。尝试加载文件,然后调用getAbsolutePath()

// code snippts.

if($document = Document::where('key', $args)->first()) 
            return response()->download(storage_path('app'). DIRECTORY_SEPARATOR . $document->getAbsolutePath());


已编辑: 在您的view 中,您还使用该集合 $container->getAbsolutePath() 第 65 行。

【讨论】:

我在你的视图文件中指出了错误的代码。检查Edited部分。 您可以评论该行并检查它是否有效... 您想在视图中正确链接文档网址吗? comment in view,将 route('new-doc', ['args' => $container->getAbsolutePath()]) 替换为#仅用于调试。 上面写着Undefined variable: contents (View: C:\Users\rust\Desktop\projectName\resources\views\container\index.blade.php)

以上是关于调用未定义的方法 Illuminate\Database\Eloquent\Builder::getAbsolutePath() [重复]的主要内容,如果未能解决你的问题,请参考以下文章

调用未定义的方法 BelongsTo::attach()

未调用自定义 UIButton 的 setIsSelected 方法

调用未定义的方法 Cake\ORM\Entity::query() CakePhp

致命错误:未捕获的错误:调用未定义的方法 stdClass::option();

调用类方法时出现“调用未定义函数”错误

调用未定义的方法 Illuminate\Foundation\Application::bindShared()