Php 为什么在laravel下拉选项值中两次显示选定值
数据库表Php 为什么在laravel下拉选项值中两次显示选定值,php,mysql,laravel,eloquent,laravel-5,Php,Mysql,Laravel,Eloquent,Laravel 5,数据库表 jobcategories id | name 1 | IT 2 | MBA 3 | Pharmacy public function postAddJobs() { $input = Input::all(); if(isset($_POST['submit'])){ $jobdetails = JobDetail::create(array ( 'job_title' => $inpu
jobcategories
id | name
1 | IT
2 | MBA
3 | Pharmacy
public function postAddJobs() {
$input = Input::all();
if(isset($_POST['submit'])){
$jobdetails = JobDetail::create(array
(
'job_title' => $input['title'],
.........
)
);
}
if(isset($input['category'])){
foreach($input['category'] as $catID){
$jcat = JobCategory::find($catID);
$jobdetails->jobcategory()->associate($jcat);
$jobdetails->save();
}
}
<select name="category[]" class="details">
<option value="">{{ $jobedit->jobcategory->name }}</option>
@foreach(JobCategory::all() as $jcat)
<option value="{{ $jcat->id }}">{{ $jcat->name }}</option>
@endforeach
我通过在jobdetails表中选择下拉值来保存其中一个值
jobdetails
id | job_title | jobcategory_id | ...
1 | Software Engg. | 1
// JobDetail model
public function jobcategory()
{
return $this->belongsTo('JobCategory');
}
// JobCategory model
public function jobdetails()
{
return $this->hasMany('JobDetail', 'jobcategories');
}
要保存的控制器
jobcategories
id | name
1 | IT
2 | MBA
3 | Pharmacy
public function postAddJobs() {
$input = Input::all();
if(isset($_POST['submit'])){
$jobdetails = JobDetail::create(array
(
'job_title' => $input['title'],
.........
)
);
}
if(isset($input['category'])){
foreach($input['category'] as $catID){
$jcat = JobCategory::find($catID);
$jobdetails->jobcategory()->associate($jcat);
$jobdetails->save();
}
}
<select name="category[]" class="details">
<option value="">{{ $jobedit->jobcategory->name }}</option>
@foreach(JobCategory::all() as $jcat)
<option value="{{ $jcat->id }}">{{ $jcat->name }}</option>
@endforeach
查看保存文件的位置
<select name="category[]" class="details">
<option value="">Select Category</option>
@foreach(JobCategory::all() as $jcat)
<option value="{{ $jcat->id }}">{{ $jcat->name }}</option>
@endforeach
</select>
显示编辑数据库的页面
jobcategories
id | name
1 | IT
2 | MBA
3 | Pharmacy
public function postAddJobs() {
$input = Input::all();
if(isset($_POST['submit'])){
$jobdetails = JobDetail::create(array
(
'job_title' => $input['title'],
.........
)
);
}
if(isset($input['category'])){
foreach($input['category'] as $catID){
$jcat = JobCategory::find($catID);
$jobdetails->jobcategory()->associate($jcat);
$jobdetails->save();
}
}
<select name="category[]" class="details">
<option value="">{{ $jobedit->jobcategory->name }}</option>
@foreach(JobCategory::all() as $jcat)
<option value="{{ $jcat->id }}">{{ $jcat->name }}</option>
@endforeach
{{$jobedit->jobcategory->name}
@foreach(JobCategory::all()作为$jcat)
{{$jcat->name}
@endforeach
我的问题是,它成功保存并成功编辑,但当我编辑时,从数据库中选择的值在选项值中显示两次,为什么它在下拉选项值中显示两次?如果此保存和编辑过程不完美,请帮助我展示保存和编辑的良好过程。请帮助,我是学习laravel的新手。它在您的数据库中列出了两次吗?一篇文章必须属于一个选项值…但我想用选项值编辑的每篇文章,该文章的选定值都会显示两次@Ortix92您没有回答我的问题是的,它可以是数据库中的两倍或更多,因为一篇文章可以分为许多类别,但它保留在不同的文章中。。。清楚吗@好吧,你的答案就在那里。如果同一事物属于多个模型,则不应在数据库中多次保存该事物。您应该使用关系和透视表将值分配给所需的模型。