2016-11-24 10 views
0

私は構築しているカスタムPHPフレームワークでLaravelのEloquent ORMをコンポーザー経由で使用しようとしていますが、私のコントローラでcreateメソッドを呼び出すときに奇妙なエラーが発生します。Laravel Eloquent ORM - メソッド呼び出し時エラー

エラー:

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

データベース接続:

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(); 

モデル:

use Illuminate\Database\Eloquent\Model as Eloquent; 

class User extends Eloquent{ 

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

} 

最後方法:

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

誰かが私を助けることはできますか?

+0

「明るくする/データベース」:「^ 5.3」「 '' ' –

答えて

1

あなたの雄弁のinitを使用するために必要照らすの間違ったバージョンを使用していた実現。

私はサイレックスアプリでそれを実装する方法を以下に示します。

<?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(); 
    } 
} 

はその後、私のcomposer.jsonに私が必要と"illuminate/database": "~5.3""illuminate/events": "~5.3"(この第二はオプションですが、便利なあなたはモデルイベントを使用する場合) 。

そして最後に、私のApplicationクラス__construct()DatabaseSummoner::setup($this);を呼び出します。

これは明らかにセットアップとは異なりますが、あなたの方法を見つけることができます。

1

アップデート:私は不完全かもしれ4.2

+0

私は何が間違っているか把握しようと少なくとも2日を無駄にしました...最新バージョンは完全に壊れました。ありがとうございました。 – evsar3

関連する問題