从blade中的laravel列表输出值


Outputing values from a laravel list in blade

我有一个laravel列表定义在我的控制器如下:

$industries = Industry::lists('id', 'name');
$salaries = Salary::lists('id', 'range', 'rate');

如何输出或访问刀片模板中的列?

我做了以下操作,我得到错误'试图获得非对象的属性':

@foreach ($industries as $industry)
<div class="checkbox margin-top-0  ">
  <label>
    {!! Form::checkbox('industry_list[]', $industry->id) !!}
    {{$industry->name}}
  </label>
</div>
@endforeach

我如何使用for循环迭代,以及我试图确定第一次迭代-使用下面的我得到偏移错误。

@for ($i = 0; $i <= count($salaries); $i++)
<div class="checkbox @if($i == 0) margin-top-0 @endif ">
  <label>
    {!! Form::checkbox('salary_list[]', $salaries->id) !!}
    {{$salaries->name}}
  </label>
</div>
@endfor 

我如何迭代$ salary数组-我是否需要使其成为一个集合,因为Salary::lists('id', 'range', 'rate');数组只包含两列,奇怪的是,当我做'dd($ salary); '为什么数组定义为'range'值为键和'id'为值,尽管它被声明为'id'为键?

array:33 [
 "10,000 - 15,000" => 24
 "15,000 - 20,000" => 25
] 

恐怕你对lists()的理解有点错误。首先,它构建一个数组,数组有一个和一个。没有第三个属性的空间,因此lists()函数只接受两个参数:

public function lists($column, $key = null)
同样,第一个参数是,第二个参数是。这是因为你也可以构建一个只有数字键的数组。

所以你应该这样做:

$industries = Industry::lists('name', 'id');

然后,在foreach循环中你不必把它当作一个对象,它只是一个值:

@foreach ($industries as $id => $industry)
    <div class="checkbox margin-top-0  ">
        <label>
            {!! Form::checkbox('industry_list[]', $id) !!}
            {{$industry}}
        </label>
    </div>
@endforeach

然而,在您的情况下,我并没有真正看到使用lists()的好处。只需使用Industry::all()检索完整的模型集合,您就可以执行$industry->id$industry->name之类的操作,并且您将能够处理不止两个值。

使用说明:

$industries = Industry::all('id', 'name');
$salaries = Salary::all('id', 'range', 'rate');

static Collection|Model[] all(array $columns = array('*'))

从数据库中获取所有模型。

参数数组$columns
返回价值收藏|模型[]

参考:http://laravel.com/api/5.0/Illuminate/Database/Eloquent/Model.html