2017-02-02 6 views
1

私はプロジェクトを作成するためのフォームを持っています。それは2つの外部キードメインと所有者(domain_idとowner_id)を含んでいます。実際にはこれらは2つのドロップダウンリストです。私がフォームを提出しようとすると、私のデータベースをチェックすると、ドロップダウンリストから値を選択しても、所有者とドメインがNULL値を持つことがわかりました。データベースにドロップダウンリストの選択を保存する方法は?

これはprojectControllerです:

public function create() 
{ 
    $domains = Domain::all('nameDomaine', 'id'); 
    $owners = Owner::all('nameOwner', 'id'); 

    return view('projectss.create', compact('domaines', 'owners')); 
} 

public function store(Request $request) 
{ 
    $domain_id = Domain::all()->pluck('nameDomain', 'id'); 
    $owner_id = Owner::all()->pluck('nameOwner', 'id'); 
    $this->validate($request, [ 
     'title'  => 'required', 
     'code'  => 'required', 
     'domain_id' => 'required', 
     'owner_id' => 'required', 
    ]); 

    Project::create($request->all()); 

    return redirect()->route('projects.index') 
     ->with('success', 'Project created successfully'); 

} 

と、これはcreate.blade.phpです:

<div class="col-xs-12 col-sm-12 col-md-12"> 
    <div class="form-group"> 
    <strong> Domain : </strong> 
    <select class="form-control" name="domain_id"> 
     @if (!count($domains) > 0)         
     <strong> Whoops! Something went wrong </strong>       
     @else 
     @foreach($domains as $id => $domain) 
       <option value="{{ $id }}">{{ $domain->domain }}</option> 
     @endforeach 
     @endif 
    </select> 
    </div> 
</div> 

<div class="col-xs-12 col-sm-12 col-md-12"> 
    <div class="form-group"> 
    <strong> owner : </strong> 
    <select class="form-control" name="owner_id"> 
    @if (!count($owners) > 0)         
     <strong> Whoops! Something went wrong </strong>       
    @else 
     @foreach($owners as $id => $owner) 
       <option value="{{ $id }}">{{ $owner->nameOwner }}</option> 
     @endforeach 
    @endif 
    </select> 
</div> 
</div> 

私はこの問題についての記事をたくさん読んで、それらのどれも私のために働いていません。

+0

妥当性検査に合格しましたか?それをフォームの中にラッピングしていますか?あなたのタイトルとコードがデータベースに正しく挿入されていますか? – Vikash

+0

はい、検証に合格しました。タイトルとコーデが正しく挿入されています。はい、ドロップダウンリストはフォーム内にあります。 – Naj

+0

ストア機能で 'Log :: info($ request-> all());'を実行し、フォームチェックを送信してくださいdomain_idとorder_idの値が正しく来ていますか? – Vikash

答えて

0

少し近づいているようですが、少し微調整が必​​要です。また、プロジェクトモデルをチェックし、$ fillable配列があるかどうかを確認します。あなたの検証電話のすべてのフィールドが必要な場合は、

ストア機能でコールを削除します。

public function create() 
{ 
    $domains = Domain::all('nameDomaine', 'id'); 
    $owners = Owner::all('nameOwner', 'id'); 

    return view('projectss.create', compact('domaines', 'owners')); 
} 

public function store(Request $request) 
{ 

    $this->validate($request, [ 
     'title'  => 'required', 
     'code'  => 'required', 
     'domain_id' => 'required', 
     'owner_id' => 'required', 
    ]); 

    Project::create($request->all()); 

    return redirect()->route('projects.index') 
     ->with('success', 'Project created successfully'); 
} 

正しいIDを追加してください。

<div class="col-xs-12 col-sm-12 col-md-12"> 
    <div class="form-group"> 
    <strong> Domain : </strong> 
    <select class="form-control" name="domain_id"> 
     @if (!count($domains) > 0)         
     <strong> Whoops! Something went wrong </strong>       
     @else 
     @foreach($domains as $domain) 
       <option value="{{ $domain->id }}">{{ $domain->domain }}</option> 
     @endforeach 
     @endif 
    </select> 
    </div> 
</div> 

<div class="col-xs-12 col-sm-12 col-md-12"> 
    <div class="form-group"> 
    <strong> owner : </strong> 
    <select class="form-control" name="owner_id"> 
    @if (!count($owners) > 0)         
     <strong> Whoops! Something went wrong </strong>       
    @else 
     @foreach($owners as $owner) 
       <option value="{{ $owner->id }}">{{ $owner->nameOwner }}</option> 
     @endforeach 
    @endif 
    </select> 
</div> 
</div> 
1

あなたが見るには、コントローラのストア機能

$domain_id = Domain::all('nameDomain', 'id'); 
$owner_id = Owner::all('nameOwner', 'id'); 

にこの

を試すことができます

<select class="form-control" name="domain_id"> 
    @if (!count($domains) > 0)         
    <strong> Whoops! Something went wrong </strong>       
    @else 
    @foreach($domains as $id => $domain) 
      <option value="{{ $domain->id }}">{{ $domain->domain }}</option> 
    @endforeach 
    @endif 
</select> 

及び第2の選択オプション

<select class="form-control" name="owner_id"> 
@if (!count($owners) > 0)         
    <strong> Whoops! Something went wrong </strong>       
@else 
    @foreach($owners as $id => $owner) 
      <option value="{{ $owner->id }}">{{ $owner->nameOwner }}</option> 
    @endforeach 
@endif 

のため

オブジェクトのIDを取得していませんでした。あなたが取り出した$idはあなたにインデックスを与えるだけです。

これは

@foreach($owners as $owner) 
    <option value={{ $owner->id }}>{{ $owner->nameOwner}</option> 
@endforeach 

に:)

1

変更

@foreach($owners as $id => $owner) 
    <option value="{{ $id }}">{{ $owner->nameOwner }}</option> 
@endforeach 

を仕事や他のforeachループを繰り返す必要があります。

これでうまくいかない場合は、コントローラにdd($ request)を追加します。どんな情報がそれに渡されているのかわかり、私たちと共有してください。

関連する問題