2016-12-01 75 views
0

到目前爲止,我知道如何用雄辯來填充下拉列表(和採摘)是這個填充下拉列表中laravel超過2個屬性

public function create() 
{ 
    $items = Item::all()->pluck('name', 'id'); 
    return view('admin.item.create', compact('items')); 
} 

而與此

{!! Form::select('item_id', $items, null, ['class' => 'form-control']) !!} 

我可以生成這個

<select name="items" class="form-control"> 
    <option value="1">Item 1</option> 
    <option value="2">Item 2</option> 
    <option value="3">Item 3</option> 
</select> 

但是現在我想創建類似這樣的東西

<select name="items" class="form-control"> 
    <option value="1">Item 1 - Location</option> 
    <option value="2">Item 2 - Location</option> 
    <option value="3">Item 3 - Location</option> 
</select> 

我只能使用與2屬性的採摘。但是現在我想讓它顯示3個屬性。我怎麼做?順便說一下,我使用的是Laravel 5.3。謝謝您的幫助。

+0

然後加入兩個表,項目和位置,然後嘗試 – Komal

+0

什麼是您的項目字段? – AmirAgha

+0

正如@Komal所說的,加入兩個表(位置和項目)並連接值,然後返回到視圖。 – Ronald

回答

0

你有一個像[1=> "something",2=>"else"]陣列。所以,你的任務是要麼迭代陣列和編輯值或從數據庫中選擇的位置和使用foreacharray_filter

所以像下面這樣:

$items=[]; 
foreach(Item::all() as $item){ 
    $items[$item->id] = $item->name . " - " . $item->location->name; // build string to display here 
} 

編輯:

您的評論說,位置是在同一個表中,因此看起來像......

$items=[]; 
foreach(Item::all() as $item){ 
    $items[$item->id] = $item->name . " - " . $item->location; // build string to display here 
} 
+0

它的工作原理!所以現在對於超過2個屬性我不能使用pluck(),但是我必須使用all()來代替?非常感謝! –

0

普呂克位置也

public function create() 
{ 
    $items = Item::all()->pluck('name', 'id', 'location'); 
    return view('admin.item.create', compact('items')); 
} 

生成這樣

<select name="items" class="form-control"> 
    @foreach($items as $item) 
    <option value="{{ $item->id }}">{{ $item->name }} - {{ $item->location }}</option> 
    @endforeach     
</select> 
+0

對不起,但它返回試圖獲取非對象錯誤的屬性。另外,我認爲pluck只能返回2種屬性。即使我是dd,它也不會顯示出來。但感謝您的幫助 –

0

創建的數組列表的最佳方法。

public function create(){ 
$items = Item::where('id','<>','')->lists('name', 'id'); 
return view('admin.item.create', compact('items'));}