Laravel 6 не может найти класс вендора из быстро настроенного пакета, выпущенного для Laravel 5 - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь использовать Firebird 3.0 с Laravel 6.0, и я следую https://firebirdsql.org/file/documentation/reference_manuals/fbdevgd-en/html/fbdevgd30-php-Laravel-crt-project.html, где предлагается пакет https://github.com/sim1984/laravel-firebird. К сожалению, этот пакет предназначен для Laravel 5.7 (или, возможно, он не был опубликован в репозиториях composer), поэтому я получил следующее сообщение, когда пытался установить этот пакет:

[InvalidArgumentException]
Could not find a matching version of package sim1984/laravel-firebird. Check the package spelling, your version con
straint and that the package is available in a stability which matches your minimum-stability (dev).

Итак, у меня была отличная идея для тонкой настройки этого пакета, поэтому я поставил его как https://github.com/alex153490/laravel-firebird, я изменил требования к версии в его composer. json. Я надеюсь, что для обеспечения совместимости с Laravel 6 другой работы не будет. После этого я добавил этот git репозиторий в composer. json моего Laravel проекта:

 "repositories": [
        {
            "type": "package",
            "package": {
                "name": "alex153490/laravel-firebird",
                "version": "master",
                "source": {
                    "url": "https://github.com/alex153490/laravel-firebird.git",
                    "type": "git",
                    "reference": "master"
                }
            }
        }
    ]

Теперь пакет установлен нормально. Я создал один файл модели в своем проекте Laravel и добавил импорт

use Firebird\Eloquent\Model;

, как было предложено в исходном описании оригинальной упаковки.

Но теперь я начал получать ошибка

Symfony\Component\Debug\Exception\FatalThrowableError
Class 'Firebird\Eloquent\Model' not found 

при попытке вызвать этот класс модели из простого контроллера API отдыха моего проекта.

Почему в этом классе не найдена ошибка - пакет был установлен без ошибок, пакет находится в папке vendor моего проекта и все вроде бы в порядке. Я проверил возможные проблемы из контрольного списка https://dev.to/dechamp/php---how-to-fix-class--not-found-error-1gp9, в том числе восстановил файл автозагрузки для своего проекта, но без помощи.

Что я сделал не так? Почему так трудно сделать класс видимым из моего пакета в каталоге vendor?

ps, когда я пытался использовать предложенные пакеты Laravel -Firebird для Laravel 6 (https://packagist.org/packages/harrygulliford/laravel-firebird или https://github.com/KKSzymanowski/laravel-6-firebird) Я всегда получал событие исключения для самого базового c оператора select:

Illuminate\Database\QueryException
SQLSTATE[HY000]: General error: -901 Dynamic SQL Error SQL error code = -901 feature is not supported (SQL: select * from "MY_TABLE") 

Мне кажется, что авторы пакета только что предоставили данные для грамматики c, специфицированной Firebird (включая операторы для системных данных), но они игнорировали то, что в Firebird могут отсутствовать некоторые функции, которые можно использовать Laravel.

...