Laravel returns 数字字段的空数组

Laravel returns an empty array for a number field

当我在 blade 中输出查询结果时,数字字段值作为数组返回,但如果您查看原始记录,该值是 1 或 0。

Laravel版本:5.4.36

产品负责人:

  $products = Product::select('id', 'hidden')->take(2)->get();
  return view('products.index', compact('products'));

如果我将 ->toArray() 附加到查询,问题就会消失。 但我不应该(我想)。

产品型号:

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
}

数据结构:

id: INT(10)
hidden: TINYINT(1)

Blade 视图:

@foreach($products as $product)
  id: {{$product['id']}}<br>
  @if(is_array ($product['hidden']))
    hidden (array): <?=count($product['hidden'])?><br>
  @endif
  record set:  {{$product}}  <br>
@endforeach

输出

id: 7339 
hidden (array): 0
record set: {"id":7339,"hidden":0}
id: 7340
hidden (array): 0
record set: {"id":7340,"hidden":1}

这是已在 Laravel 5.5 中修复的 bug

您必须将 hidden 作为对象访问 属性:

{{ $product->hidden }}