【发布时间】:2017-06-16 19:06:02
【问题描述】:
我正在使用 laravel 5.3 和 MySQL。我试图使用外键从不同的表中检索数据。将显示我从另一个表“domaines”获得的数据的字段是一个下拉列表,但它始终为空。
这是我的项目控制器:
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>
模型项目.php:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use App\Domaine;
class Pro extends Model
{
public $fillable = ['title','code','domaine_id'];
}
迁移:创建项目表:
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');
}
知道为什么列表总是空的吗?我有播种机,所以数据库中的表不为空
【问题讨论】:
标签: mysql laravel foreign-keys