Метод загрузки не вызывается при использовании библиотеки подсветки вне Laravel

Я пытаюсь использовать освещать библиотеку вне Laravel. Следуя этому репо https://github.com/mattstauffer/IlluminateNonLaravel, Я успешно использую модель Eloquent со своим проектом. Однако я настраиваю метод загрузки, тогда он не вызывается.

Encapsulator.php

<?php  namespace App\Eloquent;

use Illuminate\Container\Container;
use Illuminate\Database\Capsule\Manager as Capsule;
use Illuminate\Events\Dispatcher;

class Encapsulator
{
private static $conn;

private function __construct() {}

static public function init()
{
if (is_null(self::$conn))
{
$capsule = new Capsule;

$capsule->addConnection([
'driver'    => 'mysql',
'host'      => HOSTNAME,
'database'  => DATABASE,
'username'  => USERNAME,
'password'  => PASSWORD,
'charset'   => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix'    => PREFIX,
]);

$capsule->setEventDispatcher(new Dispatcher(new Container));

$capsule->setAsGlobal();

$capsule->bootEloquent();
}
}
}

EncapsulatedEloquentBase.php

<?php  namespace App\Eloquent;

use Illuminate\Database\Eloquent\Model as Eloquent;

abstract class EncapsulatedEloquentBase extends Eloquent
{
public function __construct(array $attributes = array())
{
Encapsulator::init();

parent::__construct($attributes);
}
}

User.php

<?php namespace App\Eloquent;

class User extends EncapsulatedEloquentBase
{

protected static function boot() {
parent::boot();
echo 'hey boot!!'; // called!

static::creating(function($node) {
echo 'hey creating!!'; // never called!
});
}
}

Я могу использовать модель, но метод регистрации не вызывается. Я думаю, проблема в том, что я не настроил EventDispatcher правильно, но я не знаю, как это сделать. Пожалуйста, помогите мне!

1

Решение

Я решил свою проблему. Ключевым моментом является то, что не создавайте новый экземпляр Encapsulator в каждой новой модели Eloquent.
В https://github.com/mattstauffer/IlluminateNonLaravel, Я расширяю от EncapsulatedEloquentBase для модели User, поэтому, когда я создаю двух пользователей и делаю что-то, они не одинаковы. Это вызывает проблему.

Итак, решение заключается в том, что пользователь расширяет Illuminate \ Database \ Eloquent \ Model

<?php namespace App\Eloquent;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{

Когда где-нибудь его использовать, просто запустите Encapsulator один раз

Encapsulator::init();
User::create(['name' => 'John']);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]