Laravel 5.4整个列表

时间:2018-03-19 20:29:02

标签: php laravel

在我的Laravel模型控制器中,我有:       公共函数guestInfo($ id)

{
    $guests = Person::where('id', $id)
              ->with('languages')
              ->get();

    return view('layouts.visitor', ['guests' => $guests]);
}

在我的刀片文件中,我有这个:

        @foreach ($guests as $guest)
some html stuff in here
{!! Form::select('name', $guest->languages->pluck('name')->all(), ['class' => 'form-control']) !!}
more html
@endforeach

Person是db表的模型“people”和“languages”是相对模型“属于”Person。

在我的语言表中,我有不同的语言行:“英语,西班牙语等”每个都在它自己的行中,它有自己的ID。
我的目标是让所有语言出现。但是目前使用上面的代码我只能显示一种语言。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您的代码将仅检索与人员相关的语言。如果您想要显示所有语言,只需将其检索为id => name对并传递给您的视图。

 $guests = Person::where('id', $id)->get();
 $languagess = Language::pluck('name', 'id);

然后使用foreach

执行$languages
@foreach ($languages as $key => $val)

  {!! Form::select('name', $key, ['class' => 'form-control']) !!}

@endforeach

答案 1 :(得分:0)

我最终在@devnullΨ的帮助下这样做了。不完全像他的建议,但它给了我一些方向。

控制器:

public function guestInfo($id)
{
    $guests = Person::where('id', $id)
              ->with('languages')
              ->get();

    $languages = Language::pluck('name')->toArray();

    return view('layouts.visitor', ['guests' => $guests, 'languages' => $languages]);
}

然后在我的刀片中:

{!! Form::select('name', $languages, 'name', ['placeholder' => '<select>','class'=>'form-control']) !!}