在laravel中形成一对多的关系

时间:2018-03-30 13:15:25

标签: php forms laravel

公司模式

class Company extends Model {
    public function position() {
         return $this->hasMany('App\Position);
    }
}

位置模型

class Position extends Model{
    public function company() {
         return $this->belongsTo('App\Company);
    }
}

公司表: id_company company_name

职位表: id_position 职位 company_id (外键)

我尝试做的是创建每个公司名称的下拉列表,以便我可以引用该公司的ID,以便将其存储为外键(company_id)。

存储到职位表的表单

{!! Form::open(['action' => 'PostionController@store', 'method' => 'POST', 'enctype' => 'multipart/form-data']) !!}
<div class="form-group">
    {{Form::label('position', 'Position')}}
    {{Form::text('position', '', ['class' => 'form-control', 'placeholder' => 'Position'])}}
</div>
//Reference to the id
<div class="form-group">
    {{Form::select(!!!Array generated from the Company table!!!")}};
</div>
{{Form::submit('Submit', ['class'=>'btn btn-primary'])}}
{{Form::reset('Reset', ['class'=>'btn btn-danger'])}}
{!! Form::close() !!}

我是Laravel的新手,所以任何参考阅读它都会很有帮助谢谢!

2 个答案:

答案 0 :(得分:0)

您可以在hasMany()中指定外键名称,在第二个参数中指定belongsTo()

公司模式

class Company extends Model {
    public function position() {
         return $this->hasMany(App\Position::class, 'company_id');
    }
}

位置模型

class Position extends Model{
    public function company() {
         return $this->belongsTo(App\Company:class, 'company_id');
    }
}

获得公司职位:

{{ Form::select('name',\App\Company::find($id)->position()->get()->toArray())}}

或者你可以按职位获得公司:

\App\Position::find($id)->company()->get()->toArray()

小心点。不要仅使用get()方法使用find()。这将返回表中的所有行。使用关系函数后,您可以使用get()

答案 1 :(得分:0)

使用此:

{!! Form::select('company_id', \App\Company::pluck('company_name', 'id_company')) !!}