【问题标题】:Laravel 5.5 Eloquent not putting quote marks around a search stringLaravel 5.5 Eloquent 不在搜索字符串周围加上引号
【发布时间】:2017-11-11 04:05:34
【问题描述】:

我正在尝试将 URL 中的值传递给控制器​​以使用 URL 中的字符串获取数据,这是将数据传递给控制器​​的路由,它工作正常,并且正确的值使其控制器

Route::middleware('auth:api')->get('test/{name}', 'EmployeeController@getAllEmployees');

我试过 $name, "$name" , '$name' , '%' 。 $名称。 “%”、“%$name%”

class EmployeeController extends Controller
{
    public function getAllEmployees($name)
    {
        $model = Employee::where('Name', 'LIKE',  $name)->get();
        return $model->tojson();
    }
}

这是错误,您可以看到该值周围没有任何引号,这是 sqlsrv 在运行查询时遇到的问题

"SQLSTATE[42S02]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Invalid object name 'Tabel_Name'. (SQL: select * from [Tabel_Name] where [Name] LIKE test)",

我做错了什么?

Laravel 5.5 sqlsrv php 7.0

【问题讨论】:

  • 向我们展示您的员工模型
  • 不需要。 Eloquent 使用参数绑定,因此它绕过了引用变量的需要。
  • 错误来自Tabel_Name不存在。

标签: php laravel laravel-5 eloquent laravel-5.5


【解决方案1】:

您不应该关心引号,因为错误来自表而不是缺少引号(Laravel 使用 PDO 绑定查询参数)。这里的问题可能是数据库中缺少表。

所以请确保您已经运行:

php artisan migrate

或者如果你还没有创建这样的表,你应该创建新的迁移,然后运行这个命令在数据库中创建表

【讨论】:

    【解决方案2】:

    很可能你的表名有问题。 Laravel 使用约定如果你的表名是 posts 那么你的模型名应该是 Post 否则你必须在模型本身中定义表名。你的模型名是什么?表名?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-23
      • 1970-01-01
      • 1970-01-01
      • 2013-12-24
      • 2012-05-29
      相关资源
      最近更新 更多