Как подключить Laravel к процедурам AS400? - PullRequest
0 голосов
/ 06 марта 2020

У меня есть API restful, разработанный в Laravel 6.X. Я хочу вызвать процедуру AS400, чтобы вернуть данные в json процедуры.

я попытался использовать проект github cooperl22 / laravel -db2 , но это не сработало, или я не сделал этого не знаю, что нужно сделать, чтобы заставить его работать.

Я изменяю config / database. php с помощью:

'ibmi' => [
            'driver' => 'db2_ibmi_odbc',
            // or 'db2_ibmi_ibm' / 'db2_zos_odbc' / 'db2_expressc_odbc
            'driverName' => '{IBM i Access ODBC Driver}',
            // or '{iSeries Access ODBC Driver}' / '{IBM i Access ODBC Driver 64-bit}'
            'host' => 'SERVER',
            'username' => 'USER',
            'password' => 'PASS',
            'database' => '',
            'prefix' => '',
            'schema' => 'default schema',
            'port' => 50000,
            'date_format' => 'Y-m-d H:i:s',
            // or 'Y-m-d H:i:s.u' / 'Y-m-d-H.i.s.u'...
            'odbc_keywords' => [
                'SIGNON' => 3,
                'SSL' => 0,
                'CommitMode' => 2,
                'ConnectionType' => 0,
                'DefaultLibraries' => '',
                'Naming' => 0,
                'UNICODESQL' => 0,
                'DateFormat' => 5,
                'DateSeperator' => 0,
                'Decimal' => 0,
                'TimeFormat' => 0,
                'TimeSeparator' => 0,
                'TimestampFormat' => 0,
                'ConvertDateTimeToChar' => 0,
                'BLOCKFETCH' => 1,
                'BlockSizeKB' => 32,
                'AllowDataCompression' => 1,
                'CONCURRENCY' => 0,
                'LAZYCLOSE' => 0,
                'MaxFieldLength' => 15360,
                'PREFETCH' => 0,
                'QUERYTIMEOUT' => 1,
                'DefaultPkgLibrary' => 'QGPL',
                'DefaultPackage' => 'A /DEFAULT(IBM),2,0,1,0',
                'ExtendedDynamic' => 0,
                'QAQQINILibrary' => '',
                'SQDIAGCODE' => '',
                'LANGUAGEID' => 'ENU',
                'SORTTABLE' => '',
                'SortSequence' => 0,
                'SORTWEIGHT' => 0,
                'AllowUnsupportedChar' => 0,
                'CCSID' => 819,
                'GRAPHIC' => 0,
                'ForceTranslation' => 0,
                'ALLOWPROCCALLS' => 0,
                'DB2SQLSTATES' => 0,
                'DEBUG' => 0,
                'TRUEAUTOCOMMIT' => 0,
                'CATALOGOPTIONS' => 3,
                'LibraryView' => 0,
                'ODBCRemarks' => 0,
                'SEARCHPATTERN' => 1,
                'TranslationDLL' => '',
                'TranslationOption' => 0,
                'MAXTRACESIZE' => 0,
                'MultipleTraceFiles' => 1,
                'TRACE' => 0,
                'TRACEFILENAME' => '',
                'ExtendedColInfo' => 0,
            ],
            'options' => [
                PDO::ATTR_CASE => PDO::CASE_LOWER,
                PDO::ATTR_PERSISTENT => false,
/*                 PDO::I5_ATTR_DBC_SYS_NAMING => false,
                PDO::I5_ATTR_COMMIT => PDO::I5_TXN_NO_COMMIT,
                PDO::I5_ATTR_JOB_SORT => false,
                PDO::I5_ATTR_DBC_LIBL => '',
                PDO::I5_ATTR_DBC_CURLIB => '', */
            ]

        ],

, чтобы проверить, сработало ли это, я создал контроллер, как в этом примере:

<?php

namespace App\Http\Controllers;
use TS;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class TestController extends Controller
{
    public function test(Request $request)
    {
        $test = DB::select('call GQPMOD.IPDC200(?,?,?,?)',array("001","001", "20200122","ZGZCAR1"));

        return $test;
    }
}

Когда я пробую этот метод с почтальоном, этот ответ с HTTP 500 и

InvalidArgumentException: Unsupported driver [db2_ibmi_odbc] in file C:\Desarrollo\GIT\_Personal\laravel-connect-as400-test\vendor\laravel\framework\src\Illuminate\Database\Connectors\ConnectionFactory.php on line 285

Что я должен сделать, чтобы он работал?

Знаете ли вы какой-либо другой способ подключения к хранимой процедуре aS400?

Спасибо за помощь.

...