Laravel API 参数

Posted

技术标签:

【中文标题】Laravel API 参数【英文标题】:Laravel API parameters 【发布时间】:2019-06-18 08:22:54 【问题描述】:

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

现在我希望能够在我的 URL 中发送参数,以便我可以使用我在 URL 中输入的 id 获得特定产品。例如 (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 products where products.id = 3限制 1) 在第 664 行的文件 D:\wamp64\www\NorthwindAPI\vendor\laravel\framework\src\Illuminate\Database\Connection.php

我非常感谢有人的帮助。

【问题讨论】:

【参考方案1】:

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

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

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

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

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

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

【讨论】:

感谢您的帮助。我发现我拼写的 $primaryKey 没有大写字母 K,所以这就是它不起作用的原因。

以上是关于Laravel API 参数的主要内容,如果未能解决你的问题,请参考以下文章

用laravel消费我自己的api不能带get参数

Laravel 验证请求和 API 路由 POST 参数

Laravel Passport API 调用代码参数 null

使用带有 laravel 的 Mandrill API 的“异步”参数

具有多个参数值的 Laravel RESTful API

Laravel 的参数获取