如何解决类 stdClass 的对象无法转换为字符串,同时将数据返回到 laravel 中的视图中


How to solve Object of class stdClass could not be converted to string while returning data into view in laravel?

这是我的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 

希望能为您提供一些见解。