У меня есть две таблицы, 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 { }
Я не уверен, что это правильный способ сохранить отношения. При вставке я могу выполнить следующие два метода:
Идентификатор набора.
$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();
-$emp->employeeTypes()->associate(EmployeeType::findOrFail($request->employee_types_id)); $emp->name = $request->name; $emp->save();
Оба метода работают нормально.
В чем разница между этими двумя типами вставки?
Какой лучший метод?
Прежде чем сравнивать варианты, есть третий:
Использование associate()
только с идентификатором
$emp->employeeTypes()->associate($request->employee_types_id);
Теперь давайте посмотрим, какие преимущества и недостатки методов:
associate()
с моделью associate()
только с идентификатором $emp->employeeTypes
Я лично предпочитаю использовать associate()
(в основном все методы отношений, даже если они не всегда необходимы). Если у меня уже есть модель, я передаю это, и в противном случае я просто использую идентификатор. Вы уже определили свои отношения с внешним ключом и т. Д., Чтобы вы могли использовать его.