代码之家  ›  专栏  ›  技术社区  ›  Oleg Nurutdinov Full Heleno

生产服务器上的composer包出现问题-Laravel项目

  •  0
  • Oleg Nurutdinov Full Heleno  · 技术社区  · 7 年前

    当trait方法调用时,我的问题是BadMethodCallException。 包装为kalnoy/nestedset for Laravel。在我的本地服务器上,所有的工作都很完美,但当我在生产服务器上创建我的应用程序时,我总是有一个例外:

    我试图做的却没有结果: 1编写器初始化 三。多次删除和部署项目 4作曲家需要kalnoy/nestedset 5很多小时的谷歌搜索。

    我的型号:

    namespace App;
    
    use Illuminate\Database\Eloquent\Model,
        Kalnoy\Nestedset\NodeTrait;
    
    class Category extends Model
    {
        use NodeTrait;
    
        protected $table = 'categories';
    
        public function getOnMainItems($limit = 6)
        {
            return Category::where('main', 1)->limit($limit)->get();
        }
    }
    

    “不存在”的方法:

    namespace App\Services;
    
    use App\Category;
    use Kalnoy\Nestedset\Collection;
    
    class CategoryService
    {
    
        /**
         * @param string $slug
         * @return array $categories
         */
        public function getCatalogCategoriesForFilter(string $slug = '')
        {
            $categories = [];
            if ($slug !== '') {
                $currentCategory = Category::where([['category_slug', $slug], ['active', 1]])->limit(1)->get();
                $categoriesByParent = Category::defaultOrder()->descendantsOf($currentCategory[0]->id);
                foreach ($categoriesByParent as $category) {
                    $categories[] = $category->id;
                }
            }
            return $categories;
        }
    }
    

    {
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": "^7.1.3",
        "darryldecode/cart": "~4.0",
        "doctrine/dbal": "^2.8",
        "fideloper/proxy": "^4.0",
        "kalnoy/nestedset": "^4.3",
        "laravel/framework": "5.6.*",
        "laravel/tinker": "^1.0",
        "predis/predis": "^1.1"
    },
    "require-dev": {
        "filp/whoops": "^2.0",
        "fzaninotto/faker": "^1.4",
        "mockery/mockery": "^1.0",
        "nunomaduro/collision": "^2.0",
        "phpunit/phpunit": "^7.0"
    },
    "autoload": {
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "extra": {
        "laravel": {
            "dont-discover": [
            ]
        }
    },
    "scripts": {
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate"
        ],
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover"
        ]
    },
    "config": {
        "preferred-install": "dist",
        "sort-packages": true,
        "optimize-autoloader": true
    },
    "minimum-stability": "dev",
    "prefer-stable": true
    

    }

    谢谢大家。

    更新: 错误消息:

    (1/1) BadMethodCallException
    Method Illuminate\Database\Query\Builder::descendants does not exist.
    
    in Builder.php line 2816
    at Builder->__call('descendants', array(2))
    in Builder.php line 1286
    at Builder->__call('descendants', array(2))
    in CategoryService.php line 38
    at CategoryService->getCatalogCategories('postelnoe-bele')
    in GoodsController.php line 41
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Oleg Nurutdinov Full Heleno    7 年前

    谢谢所有帮助我的人。 我解决了这个问题。

    问题出在

    Category::where('active', 1)->descendants($categoryId);
    

    正确的方法是

    Category::descendants($categoryId);
    

    我很尴尬,因为错误的方式在我的本地服务器上工作。如果有人能解释这件事,我将非常感激。