2013-07-28 11 views
8

Rozumiem można wysłać wartości do select tak:laravel: jak zapełnić ostrze SELECT z wartości z którym oświadczenie

Kontroler:

$client = Client::lists('name', 'id'); 
return View::make('index', compact('client')); 

i wypełnić to, moim zdaniem, jak tak więc:

Zobacz:

{{ Form::select('client_id', $client, Input::old('client_id')) }} 

Ale jak mam wypełnić tylko rekordy z Cl ients, gdzie na przykład group_id = 1.

Próbowałem:

$client = Client::lists('name', 'id')->where('group_id', 1)->get(); 

i

$client = Client::lists('name', 'id')->where('group_id','=', 1)->get(); 

Ale to nie wydają się działać tak i daje mi błąd „wywołanie funkcji składowej where() na zasadzie nie- obiekt "

Jakieś pomysły na to, jak to działa?

Odpowiedz

8

znalazłem odpowiedź, że pracował dla mnie:

Zastosowanie biegle zamiast wymowne, który będzie wyglądać następująco:

$client = DB::table('clients')->where('group_id', 1)->lists('name'); 
return View::make('index', compact('client')); 

Następnie w widoku po prostu zadzwonić go wewnątrz formy ostrze tagów takich jak ta :

{{ Form::select('client_id', $client, Input::old('client_id')) }} 

@ KyleK, dzięki za pomoc.

+1

Czy nie jest złą praktyką bezpośrednie wywoływanie tabeli po nazwie? – Carlo

+0

Tak, prawdopodobnie powinienem używać tego modelu tutaj. – jonlink

+0

Również 'list()' jest teraz przestarzałe. Odpowiedź Adriana jest lepsza. – jonlink

1

Nie jestem pewien, czy jest to literówka, czy nie, ale nie jesteś retrieiving prawidłowo,

Linia ta powinna być ...

$client = Client::lists('name', 'id')->where('group_id','=', 1)->get(); 

Również ....

Czasami gdy zapełnisz listy, dostaniesz modele i łatwo je przekażesz, ale czasami dostajesz tablice (płynne, surowe itp.), aw tych przypadkach musisz uzyskać dostęp ręcznie i zbudować formularz z kodem HTML, ponieważ musisz do niego dostęp różnie.

+0

Witam, dzięki za odpowiedź - ja otrzymuję błąd z tym „Zadzwoń do funkcji składowej, gdzie() na brak przedmiotu” Czy wiesz, dlaczego tak będzie? Sygnalizuje linię, którą zaproponowałeś powyżej. – Josh

+0

@kylek, jeśli mam tablicę identyfikatora niż jej nie działa. ('group_id', '=', $ ids) tutaj, $ id zawiera [1,2,3,]. co robić? –

9

Wykazy() musi być wywołana w ostatnim

$client = Client::where('group_id','=', 1)->lists('name','id'); 
+0

'list()' jest teraz przestarzałe. Odpowiedź Adriana jest lepsza. – jonlink

6

to będzie działać zbyt

Client::where('group_id','=', 1)->lists('name'); 
8

Kontroler:

$client = Client::where('group_id', 1)->pluck('name', 'id'); 

Widok:

{!! Form::select('client_id', $client, Input::old('client_id'), ['class'=> 'form-control']) !!} 

Wynik:

<select id="client_id" class="form-control" name="client_id"> 
    <option value="1">John</option> 
    <option value="2">Karen</option> 
</select> 
+2

'list' jest przestarzałe, teraz użyj' pluck' – shakee93

Powiązane problemy