[英]Laravel Eloquent ORM - Error when calling method
I am trying to use Laravel's Eloquent ORM via composer in a custom PHP framework I am building and I am getting an odd error when calling a create method in my controller. 我正在尝试通过正在构建的自定义PHP框架中的composer使用Laravel的Eloquent ORM,并且在控制器中调用create方法时遇到奇怪的错误。
The Error: 错误:
Fatal error: Uncaught exception 'Illuminate\\Contracts\\Container\\BindingResolutionException' with message 'Target [Illuminate\\Contracts\\Debug\\ExceptionHandler] is not instantiable.'
致命错误:带有消息“目标[Illuminate \\ Contracts \\ Debug \\ ExceptionHandler]的未捕获异常'Illuminate \\ Contracts \\ Container \\ BindingResolutionException”不可实例化。 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
在/Users/justin/Sites/test/vendor/illuminate/container/Container.php:763中的堆栈跟踪:#0 /Users/justin/Sites/test/vendor/illuminate/container/Container.php(644):照亮\\ 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 [内部功能]: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-> / Users / justin / Sites / test / vendor / illuminate / container中的REC /Container.php行763
The Database Connection: 数据库连接:
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();
The Model: 该模型:
use Illuminate\Database\Eloquent\Model as Eloquent;
class User extends Eloquent{
protected $fillable = ['username','email'];
}
Finally the Method: 最后是方法:
public function create($username = '', $email = ''){
User::create([
'username' => $username,
'email' => $email
]);
}
Can someone help me out? 有人可以帮我吗?
更新:意识到我使用的是不正确的Illuminate版本,需要使用4.2
Your Eloquent init may be incomplete. 您的雄辩性初始化可能不完整。
The following is how I implemented it in a Silex app: 以下是我在Silex应用中实现它的方式:
<?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();
}
}
Then in my composer.json I require "illuminate/database": "~5.3"
and "illuminate/events": "~5.3"
(this second is optional, but useful if you want to use model events). 然后在我的composer.json文件中,我需要
"illuminate/database": "~5.3"
和"illuminate/events": "~5.3"
(这是可选的,但如果要使用模型事件,则很有用)。
And, finally, in the __construct()
of my Application
class I call DatabaseSummoner::setup($this);
最后,在我的
Application
类的__construct()
,我调用DatabaseSummoner::setup($this);
. 。
This obviously differs from your setup, but you may find your way. 显然,这与您的设置不同,但是您可以找到自己的方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.