Я пытаюсь использовать 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.