Gre*_*try 2 php sql-server laravel
我是laravel的新手,在了解查询构建器的工作原理方面遇到了一些问题.
我创建了一个laravel项目并将其成功连接到sqlsrv.现在我想从数据库中检索数据.
首先没有模型只是wep.php为了理解.
Route::get('/tasks', function () {
$tasks = DB::table('WebShops')->get();
dd($tasks);
});
Run Code Online (Sandbox Code Playgroud)
这是工作它向我显示所有数据库行.
现在我想用find命令过滤行,我得到一个错误:
Route::get('/tasks/{ShopID}', function($ShopID){
$task = DB::table('WebShops')->find($ShopID);
dd($task);
});
Run Code Online (Sandbox Code Playgroud)
SQLSTATE [42S22]:[Microsoft] [SQL Server的ODBC驱动程序11] [SQL Server]无效的列名"id".(SQL:从[WebShops]中选择前1*,其中[id] = 1)
这是令人困惑的,因为我分配了找到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);
});
Run Code Online (Sandbox Code Playgroud)
这向我展示了一个我不太了解的数据.
在代码中
Route::get('/tasks/{ShopID}', function($ShopID){
$task = DB::table('WebShops')->find($ShopID);
dd($task);
});
Run Code Online (Sandbox Code Playgroud)
你试图找到哪个字段等于$ShopID值的行?
Laravel不知道.因此,它假设您将字段id作为主键.由于您没有这样的字段,根据您的表结构,您有一个错误.
根据手册,您可以使用以下命令重新定义主键:
public $primarykey = 'ShopID';
Run Code Online (Sandbox Code Playgroud)
在您的模型文件中.
在第二次尝试中,要接收记录集合 - 添加get():
Route::get('/tasks/{ShopID}', function($ShopID){
$task = DB::table('WebShops')->where('ShopID', $ShopID)->get();
dd($task);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
405 次 |
| 最近记录: |