Вызов функции-члена connection () со значением NULL при использовании Illuminate Routing и Eloquent снаружи Laravel - PullRequest
0 голосов
/ 23 января 2020

Для небольшого проекта я решил использовать Компоненты Torch Маршрутизация и База данных (Eloquent), но всякий раз, когда я пытаюсь сделать вызов из базы данных, я получаю это ошибка

Неустранимая ошибка: Uncaught Symfony \ Component \ Debug \ Exception \ FatalThrowableError: вызов функции-члена connection () для null в \ vendor \ lightingate \ database \ Eloquent \ Model. php: 1255

init. php

<code><?php

// Initialize Globals

use Illuminate\Container\Container;
use Illuminate\Events\Dispatcher;
use Illuminate\Http\Request;
use Illuminate\Routing\Redirector;
use Illuminate\Routing\Router;
use Illuminate\Routing\UrlGenerator;

define( 'ROOT', dirname( __DIR__ ) . DIRECTORY_SEPARATOR );
define( 'APP', ROOT . 'app' . DIRECTORY_SEPARATOR );
define( 'VIEW', ROOT . 'app' . DIRECTORY_SEPARATOR . 'views' . DIRECTORY_SEPARATOR );
define( 'MODEL', ROOT . 'app' . DIRECTORY_SEPARATOR . 'models' . DIRECTORY_SEPARATOR );
define( 'CORE', ROOT . 'app' . DIRECTORY_SEPARATOR . 'core' . DIRECTORY_SEPARATOR );
define( 'CONTROLLER', ROOT . 'app' . DIRECTORY_SEPARATOR . 'controllers' . DIRECTORY_SEPARATOR );
define( 'CONTROLLER_AUTH', ROOT . 'app' . DIRECTORY_SEPARATOR . 'controllers' . DIRECTORY_SEPARATOR . 'auth' . DIRECTORY_SEPARATOR );
define( 'PUBLIC_PATH', ROOT . 'public' . DIRECTORY_SEPARATOR );
define( 'ROUTES', ROOT . 'routes' . DIRECTORY_SEPARATOR );

define('loggedIn', false);

// Initialize Autoloader
spl_autoload_register( function ( $className ) {
    $path           = APP;
    $subDirectories = array_map( 'basename', glob( $path . '/*', GLOB_ONLYDIR ) );
    foreach ( $subDirectories as $subDirectory ) {
        $subSubDirectories = array_map( 'basename', glob( $path . $subDirectory . '/*', GLOB_ONLYDIR ) );
        if ( $subSubDirectories ) {
            $lastElement = end( $subSubDirectories );
            foreach ( $subSubDirectories as $subSubDirectory ) {
                $autoloadingClass = $path . $subDirectory . DIRECTORY_SEPARATOR . $subSubDirectory . DIRECTORY_SEPARATOR . $className . '.php';
                if ( $subSubDirectory == $lastElement ) {
                    if ( file_exists( $autoloadingClass ) ) {
                        /** @var string $autoloadingClass */
                        require_once $autoloadingClass;
                        break;
                    }
                } else {
                    if ( file_exists( $autoloadingClass ) ) {
                        /** @var string $autoloadingClass */
                        require_once $autoloadingClass;
                    }
                }
            }
        }
        $autoloadingClass = $path . $subDirectory . DIRECTORY_SEPARATOR . $className . '.php';
        if ( file_exists( $autoloadingClass ) ) {
            /** @var string $autoloadingClass */
            require_once $autoloadingClass;
        }
    }
} );

//Debugging function to log to browser console
function __log($message){
    echo "<script>console.log(".strval($message).")</script>";
}

function __pretyPrint($messages){
    print("<pre>".print_r($messages,true)."
");} require_once ROOT. 'Vendor'.DIRECTORY_SEPARATOR.'autoload. php'; $ Config = require_once CORE. 'Config. php'; $ container = new Container; // Создать запрос из серверных переменных и связать его с контейнером; необязательный $ request = Request :: capture (); $ container- > instance ('Illuminate \ Http \ Request', $ request); // Использование здесь Illuminate / Events / Dispatcher (не обязательно); любая реализация // Illuminate / Contracts / Event / Dispatcher приемлема $ events = new Dispatcher ($ container); // Создать экземпляр маршрутизатора $ router = new Router ($ events ); // Загружаем маршруты require_once ROUTES. 'Веб php.'; // Создание экземпляра перенаправления $ redirect = new Redirector (new UrlGenerator ($ router-> getRoutes (), $ request)); // используем redirect // return $ redirect-> home (); // вернуть $ redirect-> back (); // вернуть $ redirect-> to ('/'); // Отправляем запрос через маршрутизатор $ response = $ router-> dispatch ($ request); // Отправить ответ обратно в браузер $ response-> send ();

веб. php

<?php


use Illuminate\Routing\Router;


/** @var Router $router */
$router->get('/','mainController@index');
$router->get('/writedata','mainController@post');
$router->get('/login','loginController@index');
$router->get('/register','registerController@index');
$router->get('/systems','systemController@index');
$router->get('/systems/{id}','systemController@show');

$router->post('/register','registerController@create');
$router->post('/login','loginController@login');

Указатель. php

<?php
require_once dirname( __DIR__ ) . DIRECTORY_SEPARATOR . 'app' . DIRECTORY_SEPARATOR . 'init.php';

База данных. php

<?php

use Illuminate\Database\Capsule\Manager as Capsule;

$capsule = new Capsule;

$capsule->addConnection( [
    'driver'    => 'mysql',
    'host'      => $Config['database']['host'],
    'username'  => $Config['database']['username'],
    'password'  => $Config['database']['password'],
    'database'  => $Config['database']['name'],
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci'
] );

$capsule->setEventDispatcher( $events );
$capsule->setAsGlobal();
$capsule->bootEloquent();

Composer. json

{
  "require": {
    "ext-json": "*",
    "phpoption/phpoption": "^1.7",
    "illuminate/routing": "^6.12",
    "illuminate/database": "^6.0",
    "illuminate/events": "^6.0"
  }
}

Это то, что я пытался узнать о Проблема

Так что я прочитал много статей, где они используют SLIM, но я хотел бы использовать его без SLIM (если это возможно). Я действительно не знаю, что я делаю неправильно, большая часть этого - копирование, но это как-то не работает. Я должен добавить, что Eloquent автономно работал нормально, и это очень расстраивает.

Я также могу делать вызовы базы данных на странице индекса, но не могу отправлять запросы в базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...