【问题标题】:How to create database connection as instance of instance of Illuminate\Database\ConnectionInterface in Illuminate library?如何在 Illuminate 库中创建数据库连接作为 Illuminate\Database\ConnectionInterface 实例的实例?
【发布时间】:2016-05-01 11:30:48
【问题描述】:

我正在苗条框架中开发一个宁静的应用程序。我正在使用一个会话管理器,它使用照明数据库库。它需要我使用 Laravel 的光照实例创建一个数据库连接。但我收到一个错误。这是我的代码:

<?php
require 'lib/vendor/PHPMailer/PHPMailerAutoload.php';
require 'lib/init.php';
require 'lib/Slim/Slim.php';

date_default_timezone_set('UTC');

use lib\Slim\Middleware\SessionCookie;

\Slim\Slim::registerAutoloader();

$app = new \Slim\Slim([
    // cookie encryption (strongly recommend)
    'cookies.encrypt' => true,
    'cookies.secret_key' => 'put your secret key',
    // session config
    'sessions.driver' => 'database', // or database
    //'sessions.files' => __DIR__ . '/../sessions', // require mkdir
    'sessions.table' => 'sessions', // require create table
]);

$manager = new \Slim\Middleware\SessionManager($app);
$session = new \Slim\Middleware\Session($manager);

$manager->setDbConnection(mysql_connect('localhost', 'username', 'password', 'database'));

$app->add($session); 

$app->run();

这是我得到的错误:

参数 1 传递给 Illuminate\Session\DatabaseSessionHandler::__construct() 必须是 Illuminate\Database\ConnectionInterface 的实例,给定的资源

如果有人能指出我正确的方向,我将不胜感激。

提前致谢。

【问题讨论】:

    标签: php laravel illuminate-container


    【解决方案1】:

    您可以在此处查看 \Illuminate\Database 的源代码:
    https://github.com/illuminate/database

    Taylor 在提供独立使用此模块和创建数据库连接的文档方面做得很好。使用 Illuminate\Database\Capsule\Manager 作为 Capsule;

    $capsule = new Capsule;
    
    $capsule->addConnection([
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'database',
        'username'  => 'root',
        'password'  => 'password',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ]);
    

    【讨论】:

    • 非常感谢! @Jaw.sh 您能否指导我一些关于如何在我的应用程序中的以下语句中将 $capsule 连接实际附加到 $manager 的信息: $manager->setDbConnection(mysql_connect('localhost', 'username', 'password' , '数据库'));
    • 我会这么认为。你试过了吗?
    • 实际上发生了一些奇怪的事情,只要我放入 $capsule->addConnection ,即使我的数据库详细信息正确,我的应用程序也会停止响应。
    • 确实存在。确保Capsule 定义正确。它指向\Illuminate\Database\Capsule\Managergithub.com/illuminate/database/blob/master/Capsule/…
    • 是的,正如您所展示的那样,它的定义非常完美,并且在文档中是正确的。它指向 \Illuminate\Database\Capsule\Manager。只有当我输入 addConnection 命令时,我的整个应用程序才会停止响应。我认为你的答案应该是正确的,但我不确定。如果你能告诉我,我会标记为正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-16
    • 2014-11-29
    • 1970-01-01
    • 2017-05-06
    • 2018-01-30
    • 1970-01-01
    • 2021-10-25
    相关资源
    最近更新 更多