2016-11-16 17 views
0

の外部キーからドロップダウンを入力する適切な方法は誰でもこの問題を解決するのを助けることができますか?私は数日間間違っていました。htmlspecialchars()は、パラメータ1が文字列、配列がのLaravel 5.3であると想定しています。ここで Laravel 5.3

は(フォーム)私はちょうどこの

<select class="form-control" name="category"> 
    <?php 
    $stmt = $connect->prepare("SELECT * FROM categories"); 
    $stmt->execute(); 
    while($row = $stmt->fetch()) 
    { 
     print "<option value='".$row['id']."'>".$row['name']."</option>"; 
    } 
    ?> 
</select> 

マイカテゴリーモデル

と同等の何かを達成したい

{!! Form::open(['url' => '/processor']) !!} 
    {!! csrf_field() !!} 
    <div class="form-group"> 
     {!! Form::label('make', 'Manufacturer') !!} 
     {!! Form::select('make', ['Intel', 'AMD', 'Apple', 'Qualcomm', 'class' => 'form-control']) !!} 
    </div> 
    <div class="form-group"> 
     {!! Form::label('chipset', 'Chipset') !!} 
     {!! Form::text('chipset', ['class' => 'form-control']) !!} 
    </div> 
    <div class="form-group"> 
     {!! Form::label('type', 'Type') !!} 
     {!! Form::text('type', ['class' => 'form-control']) !!} 
    </div> 
    <div class="form-group"> 
     {!! Form::label('category', 'Category') !!} 
     {!! Form::select('categories', $categories, null, ['class' => 'form-control']) !!} 
    </div> 
    <div class="form-group"> 
     {!! Form::submit('Add Processor', ['class' => 'btn btn-primary form-control']) !!} 
    </div> 
{!! Form::close() !!} 

public function create() 
    { 
     $categories = DB::table('categories')->pluck('name', 'id'); 
     foreach($categories as $category) 
     { 
      echo $category; 
     } 
     return view('admin.processor.create', compact('categories', $categories)); 
    } 

そして、ここが私の見解だ私のコントローラであり、

use Illuminate\Database\Eloquent\Model; 

class Category extends Model 
{ 
    protected $fillable = ['name']; 

    public function processor() 
    { 
     return $this->hasMany('App\Processor', 'category_id'); 
    } 
} 

マイプロセッサモデル

use Illuminate\Database\Eloquent\Model; 

class Processor extends Model 
{ 
    protected $fillable = ['make', 'chipset', 'type', 'category_id']; 

    public function category() 
    { 
     return $this->belongsTo('App\Category', 'category_id'); 
    } 
} 

答えて

1

これを試してみてください:

同じ問題に直面している人のための

$categories = DB::table('categories')->pluck('name', 'id'); 
return view('admin.processor.create', compact('categories')); 

ビュー

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

私は試しましたが、 "BadMethodCallException in Builder.php 2450: 未定義のメソッドを呼び出す\ Database \ Query \ Builder :: lists") –

+0

私は自分の答えを更新しました。 –

+0

'compact()'関数の中で第2引数として '$ categories'を渡す必要はありません。 –

1

コントローラと、まだ取得htmlspecialchars()は、パラメータ1が文字列であることを期待しています。配列がのLaravel 5.3である場合、Laravel CollectiveのFormヘルパの代わりに通常のhtmlフォームを使用することをお勧めします。

は、ここで私は マイコントローラー

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

、あなたが今、作成ページを表示することができるはずビュー

<div class="form-group{{ $errors->has('category') ? ' has-error' : '' }}"> 
     <label for="category">Category</label> 
     <select name="category" id="category" class="form-control" required autofocus> 
      @foreach($categories as $category) 
      <option value="{{ $category }}">{{ $category }}</option> 
      @endforeach 
     </select> 
    </div> 

をやったことです。うまくいけば助けてくれます。