我是laravel的新手,在了解查询构建器的工作原理方面存在一些问题。
我创建了一个laravel项目并将其成功连接到sqlsrv。现在我想从数据库中检索数据。
首先,只有yAxes: [{
ticks: {
display: false;
},
中没有模型才能理解。
wep.php
这样可以显示所有数据库行。
现在我想用Route::get('/tasks', function () {
$tasks = DB::table('WebShops')->get();
dd($tasks);
});
命令过滤行,我收到错误:
find
SQLSTATE [42S22]:[Microsoft] [SQL Server的ODBC驱动程序11] [SQL 服务器] 列名“id”无效。 (SQL:从顶部选择前1 * [WebShops]其中[id] = 1)
这很令人困惑,因为我分配了Route::get('/tasks/{ShopID}', function($ShopID){
$task = DB::table('WebShops')->find($ShopID);
dd($task);
});
,现在我收到了搜索ShopID
的错误。为什么?
我也尝试了这个:
id
这向我展示了一个我不太了解的数据。
答案 0 :(得分:5)
代码
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);
});
答案 1 :(得分:3)
如果您使用" ShopID"默认情况下,查找表中的列ID作为主键,您必须在模型中定义,如
protected $primaryKey = 'ShopID';
之后它正在工作
$task = DB::table('WebShops')->find($ShopID);
答案 2 :(得分:0)
由于您是Laravel的新手,因此这是一个开始构建模型而不是使用查询构建器的好机会。
class WebShop extends Model {
//You need this because by convention Laravel assumes table names are snake_cased (it would look for web_shops)
protected $table = "WebShops";
// You need this because by convention the primary key is called id.
protected $primaryKey = 'ShopID';
}
然后以下代码将起作用:
$shop = WebShop::find($id);
Laravel's Eloquent是一个很好的阅读更多信息。