无法将元素从数组传递到视图

问题描述

尝试将失败的值作为单独的值从此数组传递到视图中:

  #items: array:1 [▼
    0 => {#548 ▼
      +"location": "Guadalajara"
      +"location_id": 34
    }
  ]
}

此数组位于左联接查询之后

$default_loc = DB::table('users')
                ->leftJoin('locations','users.location_id','=','locations.id')
                ->where('users.id',auth()->user()->id)
                ->select('location','location_id')
                ->get();

如果我尝试通过compact('default_loc')将此数组传递给视图,那么我只能使用{{ $default_loc }}显示整个数组,如上所示,但不能将其分成{{1 }}和$default_loc->location

谢谢大家

解决方法

由于$default_loc是一个数组,因此您应将其视为一个数组,因此要访问它,您需要使用[]运算符:

{{ $default_loc[0]->location_id }}

但是,如果您确定只返回1条记录,则可以使用first()方法而不是get()来直接给您对象:

$default_loc = DB::table('users')
            ->leftJoin('locations','users.location_id','=','locations.id')
            ->where('users.id',auth()->user()->id)
            ->select('location','location_id')
            ->first();

...
{{ $default_loc->location_id }}
,

您的预期结果是否总是1个结果?如果是,则可以将-> get()更改为-> first(),那么您将只有一个对象。

如果没有,则需要在视图中进行迭代或使用索引进行访问:

@foreach($default_loc as $loc) 
   {{ $loc->location_id }} - {{ $loc->location }}
@endforeach

{{ $default_loc[INDEX]->location_id }} {{ $default_loc[INDEX]->location }}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...