gpt4 book ai didi

php - 如何在 Laravel 中构建查询

转载 作者:行者123 更新时间:2023-12-02 06:50:29 24 4
gpt4 key购买 nike

我是 laravel 的新手,在理解查询构建器的工作方式方面遇到了一些问题。

我创建了一个 laravel 项目并将其成功连接到 sqlsrv。现在我想从数据库中检索数据。

对于第一次没有模型只是在wep.php 中进行理解。

Route::get('/tasks', function () {
$tasks = DB::table('WebShops')->get();
dd($tasks);
});

这是有效的,它显示了所有的数据库行。

现在我想使用 find 命令过滤行,但出现错误:

Route::get('/tasks/{ShopID}', function($ShopID){
$task = DB::table('WebShops')->find($ShopID);
dd($task);
});

SQLSTATE[42S22]: [Microsoft][ODBC Driver 11 for SQL Server][SQL Server] Invalid column name "id". (SQL: select top 1 * from [WebShops] where [id] = 1)

这很令人困惑,因为我将 find 分配给了 ShopID,现在我得到了正在搜索 id 的错误。为什么?

我也试过这个:

 Route::get('/tasks/{ShopID}', function($ShopID){
$task = DB::table('WebShops')->where('ShopID', $ShopID);
//dd($task->name); here comes also an error
dd($task);

});

这向我展示了一个大数组,其中包含我不太了解的数据。

enter image description here

我的数据库是这样的: enter image description here

最佳答案

在代码中

Route::get('/tasks/{ShopID}', function($ShopID){
$task = DB::table('WebShops')->find($ShopID);
dd($task);
});

您尝试查找什么 字段等于$ShopID 值的行?

Laravel 不知道。因此,它假定您将字段 id 作为主键。由于你没有这样的字段,根据你的表结构,你有一个错误。

根据手册,您可以重新定义主键:

public $primarykey = 'ShopID';

在您的模型文件中。

第二次尝试,接收记录集合 - 添加 get():

Route::get('/tasks/{ShopID}', function($ShopID){
$task = DB::table('WebShops')->where('ShopID', $ShopID)->get();
dd($task);
});

关于php - 如何在 Laravel 中构建查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45706972/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com