2016-11-24 1 views
0

Ich versuche Laravels Eloquent ORM über Composer in einem benutzerdefinierten PHP-Framework zu verwenden, das ich gerade erstelle und bekomme einen seltsamen Fehler beim Aufruf einer create-Methode in meinem Controller.Laravel Eloquent ORM - Fehler beim Aufrufen der Methode

Der Fehler:

Fatal error: Uncaught exception 'Illuminate\Contracts\Container\BindingResolutionException' with message 'Target [Illuminate\Contracts\Debug\ExceptionHandler] is not instantiable.' in /Users/justin/Sites/test/vendor/illuminate/container/Container.php:763 Stack trace: #0 /Users/justin/Sites/test/vendor/illuminate/container/Container.php(644): Illuminate\Container\Container->build('Illuminate\Cont...', Array) #1 /Users/justin/Sites/test/vendor/illuminate/database/Connectors/ConnectionFactory.php(130): Illuminate\Container\Container->make('Illuminate\Cont...') #2 [internal function]: Illuminate\Database\Connectors\ConnectionFactory->Illuminate\Database\Connectors{closure}() #3 /Users/justin/Sites/test/vendor/illuminate/database/Connection.php(964): call_user_func(Object(Closure)) #4 /Users/justin/Sites/test/vendor/illuminate/database/Connection.php(832): Illuminate\Database\Connection->getPdo() #5 /Users/justin/Sites/test/vendor/illuminate/database/Connection.php(717): Illuminate\Database\Connection->rec in /Users/justin/Sites/test/vendor/illuminate/container/Container.php on line 763

Die Datenbankverbindung:

use Illuminate\Database\Capsule\Manager as Capsule; 
$capsule = new Capsule(); 
$capsule->addConnection([ 
    'driver' => 'mysql', 
    'host' => 'localhost', 
    'username' => 'root', 
    'password' => 'root', 
    'database' => 'database', 
    'port' => '3306', 
    'charset' => 'utf-8', 
    'collation' => 'utf8_unicode_ci' 
]); 
$capsule->bootEloquent(); 

Das Modell:

use Illuminate\Database\Eloquent\Model as Eloquent; 

class User extends Eloquent{ 

    protected $fillable = ['username','email']; 

} 

Schließlich wird die Methode:

public function create($username = '', $email = ''){ 
    User::create([ 
     'username' => $username, 
     'email' => $email 
    ]); 
} 

Kann mir jemand helfen?

+0

'' '" Illuminate/Datenbank ":"^5.3 "' '' –

Antwort

1

Ihre Eloquent init verwenden kann unvollständig sein.

Das Folgende ist, wie ich es in einem Silex App implementiert:

<?php 
namespace App\Base\Provider\Database; 

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

class DatabaseSummoner 
{ 
    public static function setup(Application $app) 
    { 
     $app['db'] = $app->share(function() use ($app) { 
      # Set up Fluent Query Builder 
      $capsule  = new Capsule; 
      $db_settings = $app['config']['db']; 

      $capsule->addConnection(
       $db_settings['connections'][$db_settings['connection']] 
      ); 

      return $capsule; 
     }); 

     // Set the event dispatcher used by Eloquent models... 
     $app['db']->setEventDispatcher(new Dispatcher(new Container)); 

     // These two have to be outside closure 
     // Make the Capsule instance available globally via static methods... 
     $app['db']->setAsGlobal(); 
     // Boot Eloquent ORM 
     $app['db']->bootEloquent(); 
    } 
} 

Da ist in meinem composer.json Ich benötige "illuminate/database": "~5.3" und "illuminate/events": "~5.3" (das zweite ist optional, aber nützlich, wenn Sie wollen Modell Ereignisse verwenden) .

Und schließlich in der __construct() meiner Application Klasse ich DatabaseSummoner::setup($this); anrufen.

Dies unterscheidet sich offensichtlich von Ihrem Setup, aber Sie können Ihren Weg finden.

1

Update: Realisierte ich die falsche Version von Illuminate wurde mit, benötigt 4.2

+0

Ich verschwendet mindestens 2 Tage, um herauszufinden, was es falsch ist es ... Die neueste Version ist total pleite. Vielen Dank. – evsar3

Verwandte Themen