【问题标题】:Laravel - SQL Server 2000Laravel - SQL Server 2000
【发布时间】:2014-05-03 05:04:12
【问题描述】:

我知道有很多与此相关的问题,但我没有找到问题的答案,我使用的是 Laravel 4,而且我绝对必须使用 MS SQL SERVER 2000。在 Windows Server 2000 上, 我正在使用 PHP 5.4.X 或更高版本。 我发现 MS 不提供对 mssql 2000 的支持,并且我已经解决了 ODBC 驱动程序的问题,但我的问题是:有什么方法可以告诉 Laravel 在没有大量配置的情况下使用 odbc 驱动程序?还是我应该自己实现?

在 config/database.php 中,fetch 使用 PDO::FETCH_CLASS,但 odbc 不是 PDO,虽然在 PHP 手册中有一个 ODBC 和 DB2 (PDO) ...有什么想法吗?

【问题讨论】:

  • 我感受到你的痛苦。我也必须使用 MS SQL 2000。据我所知,它不会在 Laravel 中工作。至少不在 Eloquent 中。 MS SQL 甚至没有 LIMIT 语句;这只是一团糟。
  • 是的。它不适用于 Eloquent,驱动程序不支持函数 Last_inserted_id() for ex。所以我必须自己实现

标签: php laravel sql-server-2000


【解决方案1】:

这是一个很好的 Laravel 4 ODBC 驱动程序:https://github.com/ccovey/odbc-driver

你试过了吗?

【讨论】:

  • 是的,我用过它,我必须编辑代码才能让它工作,然后我运行它:D 事实上,你在另一篇文章中帮助了我很多......但是当它终于成功了,我尝试使用 Eloquent,发现 ODBC 驱动程序不支持 Eloquent 用于插入的 LAST_INSERTED_ID() 函数,因此无法使用它
【解决方案2】:

我通过使用 PDO ODBC 驱动程序制作自己的实现并将我的类添加到 composer.json 以便在任何地方使用它们来解决它

<?php

class SqlServerPdo {

    private static $dbName = 'dbName' ;
    private static $dbHost = '127.0.0.1';
    private static $dbUsername = 'username';
    private static $dbUserPassword = 'password';

    private static $conn  = null;

    public function __construct() {
        die('Init function is not allowed');
    }

    public static function connect() {
       // One connection through whole application
        if ( null == self::$conn ) {     
          try {

                   self::$conn = new PDO("odbc:Driver={SQL Server};Server=SERVER-NAME;Database=" . self::$dbName . ";User Id=" . self::$dbUsername . ";Password=" . self::$dbUserPassword . ";");

          } catch(PDOException $e) {

              die($e->getMessage());

          }
       }

       return self::$conn;

    }

    public static function disconnect() {

        self::$conn = null;

    }
}

【讨论】:

    猜你喜欢
    • 2010-09-26
    • 1970-01-01
    • 2011-05-04
    • 2010-12-17
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-20
    相关资源
    最近更新 更多