我正在尝试使用->find()
我想查询谎言
Where IdBiodata = '$IdBiodata'
然后我尝试这样:
Route::get('biodata/{IdBiodata}', function ($IdBiodata) {
$databiodata = DB::table('Biodata')->find($IdBiodata);
if(count($databiodata)) {
return view('biodata/vew',compact('databiodata'));
}else{
echo "Data not Found";
}
});
我跑的时候。我面对这个
SQLSTATE [42S22]:[Microsoft] [SQL Server Native Client 10.0] [SQL 服务器]无效的列名称'id'。 (SQL:从[Biodata]中选择前1 * 其中[id] = 1)
我该如何解决?提前谢谢
我的表结构
CREATE TABLE [dbo].[Biodata](
[IdBiodata] [int] IDENTITY(1,1) NOT NULL,
[Nama] [varchar](max) NULL,
[Umur] [int] NULL,
CONSTRAINT [PK_Biodata] PRIMARY KEY CLUSTERED
(
[IdBiodata] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
答案 0 :(得分:1)
find()
函数始终使用主键..如果您要通过其他字段过滤它,则可以使用where()
代替find()
..这里'一个使用您的查询的例子
$databiodata = DB::table('Biodata')->where('IdBiodata',$IdBiodata)->get();
答案 1 :(得分:1)
使用查询构建器编写的搜索查询不使用 Eloquent ORM 。find()
函数按主键和主键检索记录始终将列名称设为{ {1}}直到除非您无法在外部定义。
所以当你写这个id
时,它假定主键为id。
在$databiodata = DB::table('Biodata')->find($IdBiodata);
中,您可以更改主键
Eloquent ORM
现在,你可以写
class Biodata extends Eloquent {
protected $primaryKey = 'IdBiodata';
}
如果您不想使用Eloquent ORM,那么只需使用其他功能而不是Biodata::find($IdBiodata);
使用find()
where()
现在使用以下代码替换您的代码 从这个
$databiodata = DB::table('Biodata')->where('IdBiodata',$IdBiodata)->get();
要
$databiodata = DB::table('Biodata')->find($IdBiodata);