这是我的Laravel控制器代码
public function switchInfo($prisw, $secsw){
$cur_sw_pair_id = DB::table('sw_pairs')
->select('sw_pair_id')
->where('pri_sw','=',$prisw)
->where('sec_sw','=',$secsw)
->get();
$infolist = DB::table('cust_sw_pair')
->select('interface','pri_sw_vlan','sec_sw_vlan','pri_sw_admin_status','sec_sw_admin_status','description')
->where('sw_pair_id', '=', $cur_sw_pair_id)
->get();
return view('switchinfo.switchinfoview',compact('infolist'));
}
当执行此代码时,它给出类 stdClass 的对象无法转换为字符串错误。我该如何解决这个问题?如何将我的信息列表传递到开关信息视图而不会收到此错误?
pluck()
来获取列的值。
您的第一个查询应如下所示:
$cur_sw_pair_id = DB::table('sw_pairs')
->where('pri_sw','=',$prisw)
->where('sec_sw','=',$secsw)
->pluck('sw_pairs');
保持第二个查询不变。
希望它会有所帮助。
问题是->get()
返回一个集合,该集合是数据库中结果(行)的 0 索引集合。在您的情况下,您希望使用以下查询:
$cur_sw_pair_id = DB::table('sw_pairs')
->select('sw_pair_id')
->where('pri_sw','=',$prisw)
->where('sec_sw','=',$secsw)
->first();
然后访问$cur_sw_pair_id
的属性sw_pair_id
,如下所示:
$infolist = DB::table('cust_sw_pair')
->select('interface','pri_sw_vlan','sec_sw_vlan','pri_sw_admin_status','sec_sw_admin_status','description')
->where('sw_pair_id', '=', $cur_sw_pair_id->sw_pair_id)
->first();
然后,在您的视图中,您可以使用$infolist->PROPERTY_HERE
访问$infolist
的所有属性(->select()
语句中的任何内容)
请注意,使用 ->first()
本质上与 ->get();
相同,但您必须使用索引访问->get()
的结果,因此
$cur_sw_pair_id[0]->sw_pair_id
希望能为您提供一些见解。