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

Can't pass element from array to view

尝试-不成功-作为分隔值从该数组传递到视图中:

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

这个数组在 leftjoin 查询之后出现

$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 }},但不能将它分成 $default_loc->location$default_loc->id.

谢谢大家,

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

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

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

{{ $default_loc[INDEX]->location_id }} {{ $default_loc[INDEX]->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 }}