Я использую Laravel 5.3 Объявление имеет проблемы с сохранением через отношения hasMany
.Вставка Laravel One-To-Many на сводной таблице
У меня есть сотрудник и деятельность таблиц, которая имеет отношение «один ко многим». Каждый сотрудник будет выполнять множество действий.
Когда я добавляю действие против сотрудника, используя associate()
это отправить мне сообщение об ошибке:
BadMethodCallException in Builder.php line 2440:
Call to undefined method Illuminate\Database\Query\Builder::associate()
Ниже приведена структура БД и код:
Структура базы данных:
employee (1st table)
– employee_id
– employee_name
- created_at
- updated_at
activity (2nd table)
– activity_id
– activity_name
- created_at
- updated_at
employee_activity (pivot table)
– employee_activity_employee_id
– employee_activity_activity_id
Модельный класс:
class Employee extends Model
{
protected $table = 'employee';
protected $primaryKey = 'employee_id';
public function activity() {
return $this->hasMany('App\Models\Activity', 'employee_activity', 'employee_activity_employee_id', 'employee_id');
}
}
Модель Класс активности:
class Activity extends Model
{
protected $table = 'activity';
protected $primaryKey = 'activity_id';
public function employee() {
return $this->belongsTo('App\Models\Employee', 'employee_activity', 'employee_activity_activity_id' ,'activity_id');
}
}
Контроллер:
public function EmployeeActivityAssociation()
{
$employee_id = Input::get('employee_id');
$activity_ids = Input::get('activity_id'); // This is an array of activities
$employee = Employee::find($employee_id);
if (!empty($employee)) {
//Adding activity under the employee
foreach ($activity_ids as $id) {
$activity = Activity::find($id);
$employee->activity()->associate($activity);
$employee->save();
}
return 'Activities asscoiated to employee';
}
else {
return 'Employee not found';
}
}
ли я мои отношения определены неправильно здесь?
http://stackoverflow.com/questions/19868838/call-to-undefined-method-illuminate-database-query-builderassociate это может вам помочь. –
много для многих. –