2013-07-28 17 views
8

我知道你可以發送值select語句這樣的價值選擇:Laravel:如何填充一個刀片從WHERE語句

控制器:

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

在我看來,像填充此所以:

查看:

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

但是我怎麼填充只能從氯記錄例如,group_id = 1的用戶。

我想:

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

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

但它似乎並沒有這樣的工作,給我的錯誤「調用一個成員函數,其中()在非對象「

關於如何使其工作的任何想法?

回答

8

我發現,我工作的答案:

使用流暢,而不是口才好,這將是這個樣子:

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

然後在你看來只是這樣稱呼它刀片式標籤內:

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

@KyleK,感謝試圖幫助。

+1

按名稱直接調用表並不是一個錯誤的做法嗎? – Carlo

+0

是的,應該在這裏使用模型。 – jonlink

+0

現在不推薦使用'lists()'。阿德里安的回答比較好。 – jonlink

1

不知道這是一個錯字或沒有,但你沒有正確retrieiving,

此行應該是...

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

而且....

有時當填充列表時,你會得到模型,並且它很容易傳遞它們,但有時你會得到數組(流暢,原始等),在這種情況下,你必須手動訪問,並用HTML構建表單,因爲你必須訪問它不同。

+0

嗨,感謝您的回答 - 我得到一個錯誤,這個「電話以()非對象的成員函數」你知道爲什麼這樣做呢?它表明你在上面提出的路線。 – Josh

+0

@ kylek如果我有一個id數組比它不工作。 ('group_id','=',$ ids),$ id包含[1,2,3,]。該怎麼辦? –

9

名單()必須在最後

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

'lists()'現在已被棄用。阿德里安的回答比較好。 – jonlink

6

被稱爲這工作太

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

控制器:

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

查看:

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

結果:

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

'lists'現在不再使用'pluck' – shakee93