Mysql 如何使用外键检索数据| | laravel 5.3
我正在使用Laravel5.3和MySQL。我试图使用外键从另一个表中检索数据。将显示我从另一个表“domaines”获得的数据的字段是一个下拉列表,但它始终为空 这是我的ProjectController:Mysql 如何使用外键检索数据| | laravel 5.3,mysql,laravel,foreign-keys,Mysql,Laravel,Foreign Keys,我正在使用Laravel5.3和MySQL。我试图使用外键从另一个表中检索数据。将显示我从另一个表“domaines”获得的数据的字段是一个下拉列表,但它始终为空 这是我的ProjectController: class ProjectController extends Controller { public function index(Request $request) { $projects = Project::orderBy('id','DESC')
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>
<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>
知道为什么列表总是空的吗?我有播种机,所以数据库中的表不是空的
知道为什么列表总是空的吗
由于您使用的是pluck()
方法,所以应该像这样迭代列表:
@foreach($domaines as $id => $domaine)
<option value="{{ $id }}">{{ $domaine }}</option>
@endforeach
您可以按如下方式更改if条件:
<select class="form-control" name="domaine_id">
@if (!count($domaines) > 0)
Whoops! Something went wrong
@else
@foreach($domaines as $domaine)
<option value="{{$domaine->id}}">{{$domaine->name}}</option>
@endforeach
@endif
</select>
@如果(!count($domaines)>0)
哎呀!出了点问题
@否则
@foreach($domaines作为$domaine)
{{$domaine->name}
@endforeach
@恩迪夫
顺便说一下,在控制器中使用all()而不是pull。我尝试了all(),但它没有改变任何东西。和get()生成此错误:传递给Illumb\Database\Grammar::columnize()的参数1必须是在第123行的C:\Program Files(x86)\EasyPHP-Devserver-16.1\eds www\PC\vendor\laravel\framework\src\illumb\Database\Query\Grammars\Grammar.php中调用的给定字符串数组类型,并且defined@Naj您是否尝试迭代
pulk()
结果如我所示?另外,在使用get()
时尝试使用此选项:get(['name','id'])
是的,我迭代了pull()结果,同时将pull()替换为get()@Naj?您应该在我提供的迭代代码中使用pluck()
,或者应该像以前一样使用get()
和迭代数据。如果您做得对,但在使用pluck()
时仍然出现任何错误,请在此处发布。不,不是同时发布。这些方法都不起作用:(非常感谢,这是有效的。好吧,它显示数据的方式,不是我真正想要的(类似:{“域”:“name_domaine1”,“id”:1})。但是,至少列表不再是空的。欢迎希望它能帮助你。
@foreach($domaines as $id => $domaine)
<option value="{{ $id }}">{{ $domaine }}</option>
@endforeach
$domaines = Domaine::get(['name', 'id']);
<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>
public function create()
{
$domaines = Domaine::pluck('name', 'id');
return view('projects.create', compact('domaines'));
}
<select class="form-control" name="domaine_id">
@if (!count($domaines) > 0)
Whoops! Something went wrong
@else
@foreach($domaines as $domaine)
<option value="{{$domaine->id}}">{{$domaine->name}}</option>
@endforeach
@endif
</select>