2017-01-26 12 views
1

У меня есть вопрос, чтобы спроситьLaravel 5,3 Ливер против всех

Так что я пытался создать DropDownList, который будет показывать данные из другой таблицы. В моем контроллере я объявляю эти таблицы в моем создании функции

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

и в моих взглядах:

<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> 

И это дает ошибку: Попытка получить свойство необъектного

но если меняю срывать к все, как я сделал здесь:

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

его работы. проблема в том, что я хочу получить значение «name» & «id» и с все, он также вернет свойство, которое мне не нужно. как я могу достичь этого с помощью? и если я прочитаю документацию, в нем говорится, что pluck будет извлекать все значения для заданного ключа, но почему мой срыв не работает? Я новичок в php и laravel, поэтому любой гид будет настолько потрясающим.

ответ

1

При использовании pluck() вы получите данные в формате [id => 'name'], так это сделать:

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

И сделать то же самое с $tenants

+0

Ну его работы! спасибо за вашу помощь, но теперь я смущен. если im не ошибается, '=>' используется для назначения значения ключам в массиве. так что, если я правильно понимаю ваш ответ, то что я получаю с 'pluck()' is id со значением имени? поэтому вместо 1 как 'Id' я получу' имя'? но когда я делаю это '' он показывает, что значение 'id' действительно является' id', а не 'name'. так как это работает? Мне действительно нужно понять –

+0

@ArgaAditya да, с 'pluck()' вы получаете массивную коллекцию с '[1 => 'SomeCategoryName']' структура, где '1' является идентификатором категории из таблицы. Вот как работает 'pluck()'. –

+1

Не обращайте внимания на мой предыдущий комментарий, я перечитал документацию, и теперь я понимаю, спасибо за вашу помощь! –