我有两个表,employees
和employee types
。
employees
包含以下字段
和employee_type
包含以下字段,
我雄辩的模型功能是,
Employee
class Employee extends Model {
public function employeeTypes() {
return $this->belongsTo('App\Model\EmployeeType');
}
}
EmployeeType
class EmployeeType extends Model {
}
我不确定这是否是保持关系的正确方法。 插入时我可以遵循以下两种方法:
1.设置ID
$emp = new Employee();
$emp->employee_type_id = $request->type_id;
$emp->name = $request->name;
$emp->save();
2.设置关系
$emp->employeeTypes()->associate(EmployeeType::findOrFail($request->employee_types_id));
$emp->name = $request->name;
$emp->save();
两种方法都运行良好。
这两种插入方式有什么区别?
哪种方法最好?
答案 0 :(得分:10)
在比较选项之前,还有第三个选项:
仅将associate()
与ID
$emp->employeeTypes()->associate($request->employee_types_id);
现在让我们看看这些方法的优点和缺点是什么:
associate()
与模型associate()
只使用id $emp->employeeTypes
我个人更喜欢使用associate()
(基本上所有的关系方法,即使它们并非总是必要的)。如果我已经有模型我通过了,否则我只会使用id。您已经定义了与外键等的关系,所以您也可以使用它。