SQLServer 和 Laravel:对象名称无效错误

GKu*_*mar 5 sql-server laravel-5

如果我使用 MySQL,下面的代码可以工作。当我切换到 MS SQLServer 时出现错误。我已经启用了 pdo sqlsrv 驱动程序。我的数据库有一个名为products的表,但它显示无效的对象名称。

产品.php(模型)

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    protected $connection = 'sqlsrv';
}
?>
Run Code Online (Sandbox Code Playgroud)

数据库.php

'sqlsrv' => [
        'driver'   => 'sqlsrv',
        'host'     => env('DB_EXT_HOST', 'localhost'),
        'database' => env('DB_EXT_DATABASE', 'forge'),
        'username' => env('DB_EXT_USERNAME', 'forge'),
        'password' => env('DB_EXT_PASSWORD', ''),
        'charset'  => 'utf8',
        'prefix'   => '',
    ]
Run Code Online (Sandbox Code Playgroud)

控制器:

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Product;
use App\Http\Requests;

class APIController extends Controller
{
    public function index(Request $request)
    {
        $products = Product::paginate(5);
        return response(array(
            'error' => false,
            'products' =>$products->toArray(),
        ),200);
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

输出:

SQLSTATE[42S02]:[Microsoft][SQL Server 的 ODBC 驱动程序 11][SQL Server]对象名称“产品”无效。(SQL:选择 count(*) 作为 [products] 中的聚合)

小智 0

如果添加正确的架构不起作用,则可能是您的用户的权限问题。我猜您正在使用“forge”用户访问数据库 - 该用户是否对该表具有选择权限?

您可能必须运行此命令才能确定:

GRANT SELECT ON dbo.products TO forge
Run Code Online (Sandbox Code Playgroud)