2017-01-26 5 views
1

Ich habe eine Frage zu stellenLaravel 5.3 Pluck vs All

So ein Dropdownlist erstellen Ich habe versucht, die Daten aus einer anderen Tabelle zeigen. In meinem Controller deklarieren ich diese Tabelle in meiner Funktion erstellen

public function create() 
{ 
    $tenants = Tenant::pluck('name','id'); 
    $categories = Category::pluck('name','id'); 
    return view('items.create', ['categories' => $categories, 'tenants' => $tenants]); 
} 

und in meinen Ansichten:

<div class='form-group'> 
         <label for="category_id" class="col-md-4 control-label">Item Category</label> 
         <div class="col-md-6"> 
         <select class="form-control" name="category" id="categories"> 
          @foreach($categories as $category) 
          { 
           <option value={{ $category->id }}>{{ $category->name }}</option> 
          } 
          @endforeach 
         </select> 
         </div> 
        </div> 

        <div class='form-group'> 
         <label for="tenant_id" class="col-md-4 control-label">Tenant</label> 

         <div class="col-md-6"> 
         <select class="form-control" name="tenant" id="tenants"> 
          @foreach($tenants as $tenant) 
          { 
           <option value={{ $tenant->id }}>{{ $tenant->name }}</option> 
          } 
          @endforeach 
         </select> 
         </div> 

         </div> 

Und es ergibt sich ein Fehler: Der Versuch, Eigentum von Nicht-Objekt zu erhalten

aber wenn ich wechsle zupfen zu alle, wie ich hier tat:

public function create() 
{ 
    $tenants = Tenant::all(); 
    $categories = Category::all(); 
    return view('items.create', ['categories' => $categories, 'tenants' => $tenants]); 
} 

es funktioniert. das Problem ist, ich möchte nur den Wert von 'Name' & 'ID' und mit alle bekommen, wird es auch die Eigenschaft, die ich brauche nicht zurück. Wie kann ich das mit Zupfen erreichen? und wenn ich die Dokumentation lese, sagt es, dass Zupfen alle Werte für einen bestimmten Schlüssel abrufen wird, aber warum funktioniert mein Zupfen nicht? Ich bin neu mit PHP und Laravel, also wird jeder gegebene Guide so großartig sein.

Antwort

1

Wenn pluck() verwenden Sie die Daten in [id => 'name'] Format bekommen, dies so tun:

@foreach($categories as $id => $category) 
    <option value={{ $id }}>{{ $category }}</option> 
@endforeach 

Und das Gleiche tun mit $tenants

+0

Nun seine Arbeits! Danke für deine Hilfe, aber jetzt bin ich verwirrt. Wenn ich mich nicht irre, wird '=>' verwendet, um den Schlüsseln in einem Array einen Wert zuzuordnen. Also, wenn ich deine Antwort richtig verstehe, was ist mit "pluck()" zu bekommen ist ID mit dem Wert des Namens? also anstelle von 1 als 'Id' werde ich einen 'Namen' bekommen? aber wenn ich das tue '' zeigt es, dass der 'id' Wert in der Tat eine' id' und kein 'name' ist. Wie funktioniert das? Ich muss wirklich verstehen –

+0

@ArgaAditya ja, mit 'pluck()' erhalten Sie eine Array-ähnliche Sammlung mit '[1 => 'SomeCategoryName']' Struktur, wobei '1' die ID der Kategorie aus der Tabelle ist. So funktioniert 'pluck()'. –

+1

Egal, mein vorheriger Kommentar, ich habe die Dokumentation noch einmal gelesen und ich verstehe jetzt, danke für Ihre Hilfe! –