mysql - 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
products
whereproducts
.id
= 3 limit 1) in file D:\wamp64\www\ NorthwindAPI\vendor\laravel\framework\src\Illuminate\Database\Connection.php 在第 664 行
我真的很感激有人的帮助。
解决方案
您需要更改主键列。我假设您使用的是 Eloquent ORM,在这种情况下:
class Product extends Eloquent {
protected $primaryKey = 'ProductId';
}
值得一提的是,Laravel 非常固执己见,因此最好将所有主键列命名为“id”,这正是它所期望的。
同样,Laravel '喜欢'属性的蛇形大小写,即蛇形大小写,而不是驼峰形大小写,即驼峰形大小写。我认为您正在使用 PascalCase,这是一个非常不寻常的选择。如果您处于可以扭转这些设计决策的阶段,我强烈建议您阅读 Laravel 所期望的标准,除非您有充分的理由不遵守这些标准。
更多信息可以在这里找到:
推荐阅读
- go - 在elasticsearch中查询最大日期
- html - 将文本字段的值与 Vuetify 中的工具提示内容同步
- r - 从语料库中删除 \\r\\n 不起作用
- javascript - 当 YouTube API iFrame 命中超过 75% 的视频时执行一次函数
- powerbi - RANKX 函数 DAX 的难点
- javascript - Mapbox - 从数据库中以自定义高度挤出 3D 建筑物?
- javascript - Three.js - 多次使用时更改特定 GLTF 的材质
- reactjs - reactjs从服务器获取数据
- java - java.lang.IllegalStateException:未找到 DelegateFactoryDelegate 实现
- python - 我遇到了与元组相关的 python 问题