私はlaravel 5.3とMySQLを使用しています。私は別のテーブルからデータを取得するために外部キーを使用しようとしていました。私が他のテーブル "ドメイン"から得たデータを表示するフィールドはドロップダウンリストですが、それは常に空です。外部キーを使用してデータを取得する方法|| laravel 5.3
これは私のProjectControllerです:
class ProjectController extends Controller
{
public function index(Request $request)
{
$projects = Project::orderBy('id','DESC')->paginate(5);
return view('projects.index',compact('projects'))
->with('i', ($request->input('page', 1) - 1) * 5);
}
public function create()
{
$domaines = Domaine::pluck('name', 'id');
return view('projects.create', compact('domaines'));
}
public function store(Request $request)
{
$domaine_id = Domaine::all()->pluck('name', 'id');
$this->validate($request, [
'title' => 'required',
'code' => 'required',
'domaine_id' => 'required'
]);
Project::create($request->all());
return redirect()->route('projects.index') //???? add compact or not ??
->with('success','Project created successfully');
}
public function show($id)
{
$project = Project::find($id);
return view('projects.show',compact('project'));
}
public function edit($id)
{
$project = Project::find($id);
return view('projects.edit',compact('project'));
}
public function update(Request $request, $id)
{
$this->validate($request, [
'title' => 'required',
'code' => 'required',
'domaine_id' => 'required'
]);
Project::find($id)->update($request->all());
return redirect()->route('projects.index')
->with('success','Project updated successfully');
}
public function destroy($id)
{
Project::find($id)->delete();
return redirect()->route('projects.index')
->with('success','Project deleted successfully');
}
}
、これはshow.blade.phpです:
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<strong>Domaine:</strong>
{{ $project->domaine_id }}
</div>
</div>
create.blade.php:
<select class="form-control" name="domaine_id">
@if (empty($domaine_id))
Whoops! Something went wrong
@else
@foreach($domaines as $domaine)
<option value="{{$domaine->id}}">{{$domaine->name}}</option>
@endforeach
@endif
</select>
モデルProject.php:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use App\Domaine;
class Pro extends Model
{
public $fillable = ['title','code','domaine_id'];
}
移行:create_projects_table:
public function up()
{
Schema::create('projects', function (Blueprint $table) {
$table->increments('id', true);
$table->string('title');
$table->string('code');
$table->integer('domaine_id')->nullable();
$table->foreign('domaine_id')->references('id')->on('domaines');
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('projects');
}
リストは常に空である理由を任意のアイデア?私はシーダーを持っているので、DBのテーブルは空ではありません
ありがとう、これは動作しています。データを表示する方法は、私が本当に望んでいたものではありません({"domaine": "name_domaine1"、 "id" :1})。しかし、少なくともリストは空ではなくなりました。 – Naj
それがあなたを助けてくれることを歓迎します。 –