首页 > 解决方案 > Laravel API 参数

问题描述

我正在尝试使用带有 Northwind 数据库的 Laravel 制作 API。

现在我希望能够在我的 URL 中发送参数,以便我可以使用id我在 URL 中输入的特定产品。例如(http://localhost/NorthwindAPI/public/api/product/3)。

当我尝试这个时,laravel 给出一个错误,指出该列products.id不存在,这是正确的,因为我的列名称为 ProductID。

如何更改查询以便过滤正确的列名?

这是它给我的确切错误:

Illuminate\Database\QueryException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'products.id' in 'where clause' (SQL: select * from productswhere products. id= 3 limit 1) in file D:\wamp64\www\ NorthwindAPI\vendor\laravel\framework\src\Illuminate\Database\Connection.php 在第 664 行

我真的很感激有人的帮助。

标签: mysqljsonlaravelapi

解决方案


您需要更改主键列。我假设您使用的是 Eloquent ORM,在这种情况下:

class Product extends Eloquent {
  protected $primaryKey = 'ProductId';
}

值得一提的是,Laravel 非常固执己见,因此最好将所有主键列命名为“id”,这正是它所期望的。

同样,Laravel '喜欢'属性的蛇形大小写,即蛇形大小写,而不是驼峰形大小写,即驼峰形大小写。我认为您正在使用 PascalCase,这是一个非常不寻常的选择。如果您处于可以扭转这些设计决策的阶段,我强烈建议您阅读 Laravel 所期望的标准,除非您有充分的理由不遵守这些标准。

更多信息可以在这里找到:

https://laravel.com/docs/5.7/eloquent


推荐阅读