如何在db中存储模型之间的关系? - Laravel
问题描述:
我有一个员工表和一个角色表。在创建员工的过程中,我也希望分配一个角色。但是,我的代码将雇员表中的外键的数据存储为NULL。我如何让它存储关系?如何在db中存储模型之间的关系? - Laravel
员工model.php
class employees extends Model
{
protected $fillable = [
'first_name',
'surname',
];
public function Roles()
{
return $this->belongsTo('App\Roles');
}
角色model.php
class Roles extends Model
{
protected $fillable = [
'role_name',
];
public function Employees()
{
return $this->hasMany('App\Employees');
}
}`
控制器创建员工
public function store(EmployeesRequest $request)
{
$employee = Employees::find($request);
Employees::create($request->all());
Roles::create($request->all());
$employee->roles()->save($roles);
return redirect()->route('employees.index')->with('message','Employee has been added');
}
在我FIRST_NAME,姓氏和ROLE_NAME形式。这些被保存,但在雇员表中的role_id列为NULL?试图读取laravel文档,但奋力使用 - >保存方法
它返回当前的错误是对空调用一个成员函数的角色()
答
你必须让ROLE_ID可填写您的员工型号:
protected $fillable = [
'role_id',
'first_name',
'surname',
];
在你的控制器中: 你需要使用App \ Roles;
public function create()
{
$role = Role::lists('role_name', 'id');
return view('roles.create', compact('role'));
}
public function store(EmployeesRequest $request)
{
Employees::create($request->all());
return redirect()->route('employees.index')->with('message','Employee has been added');
}
形式:
<div class="form-group">
{!! Form::label('role_id', 'Role:') !!}
{!! Form::select('role_id', $role, null, ['class' => 'form-control']) !!}
</div>
HTML表格: 尝试这样的事情,我希望它的作品其没有测试
<label>Role</label>
<select name="role_id">
@foreach($roles as $role)
<option value="{{ $role->id }}">{{ $role->role_name }}</option>
@endforeach
</select
在你的控制器:
public function create()
{
$roles = Role::all();
return view('roles.create', compact('roles'));
}
我已添加'roles_ id“作为员工模型中可填写的。 雇员的数据传递给数据库,但角色不再传递,这就是为什么我有'角色::创建($ request-> all());' 当我这样做'role_id'不填充以显示关系。 在控制器中是否有一个我应该包含的语法使其与role_id关联? 目前我在这里,但仍然没有运气: $ employee = new Employees(); \t \t Employees :: create($ request-> all()); \t \t \t \t角色:: create($ request-> all()); \t \t $ roles = $ employee-> roles() - > associate($ employee); \t \t return redirect() - > –
雇员表中是否有外键role_id字段? Employeesrequest中是否有role_id? –
是员工表有'roles_id',没有EmpoyeesRequest。我刚刚测试过它并且roles_id列仍为NULL –