LARAVEL 5.5:从数据库中获取唯一值并作为表单选择选项传递给视图

时间:2018-07-06 12:21:28

标签: laravel laravel-5

我希望从数据库中的表中获取唯一值,并将公司名称作为选项传递给表单中的下拉列表。

控制器中的函数如下:

public function index()
{
    $id = Auth::user()->id;
    $admin = Admin::find($id);
    $companies = DB::table('vacancies')->distinct()->select('company')->get()->toArray();
    return view('admin')->with('admin',$admin)->with('companies',$companies);
}

我的看法如下:

<div class="form-group">
   @foreach ($companies as $company)
     {{ Form::label('Select Company')}}
     {{ Form::select('companies', $company->company, ['class'=>'form-control', 'placeholder'=>'Please select ...']) }}
   @endforeach
</div>

我遇到以下错误:

Invalid argument supplied for foreach()

如果我尝试{{dd($ companies}),我可以看到一个数组正在传递给视图OK。该数组如下所示:

array:353[
  0 => {#274 ▼
  +"company": "Example company name"
  }......
]

放弃循环并返回到:

<div class="form-group">
  {{ Form::label('Select Company')}}
  {{ Form::select('companies', $companies, ['class'=>'form-control', 'placeholder'=>'Please select ...']) }}
</div>

会引发另一个错误,指出:

htmlspecialchars() expects parameter 1 to be string, object given

我在哪里错了?

2 个答案:

答案 0 :(得分:1)

按照下面的内容

您的索引函数必须如下所示

public function index()
{
    $id = Auth::user()->id;
    $admin = Admin::find($id);
    $companies = DB::table('vacancies')->distinct()->pluck('company')->toArray();
    return view('admin')->with('admin',$admin)->with('companies',$companies);
}

您的观点一定要像下面

<div class="form-group">
     {{ Form::label('Select Company')}}
     {{ Form::select('companies', $companies, ['class'=>'form-control', 'placeholder'=>'Please select ...']) }}
</div>

让我知道是否有

答案 1 :(得分:1)

在您的控制器中

tagValue