hasMany
関係を保存する際に問題があるLaravel 5.3広告を使用しています。ピボットテーブルにLaravel One-To-Manyを挿入
私はテーブルに従業員と1対多の関係を持つアクティビティを持っています。つまり、各従業員は多くのアクティビティを実行します。
私はそれは私にエラーを送信associate()
を使用して、従業員に対する活動を追加してい:
BadMethodCallException in Builder.php line 2440:
Call to undefined method Illuminate\Database\Query\Builder::associate()
は、DBの構造とコードです:
データベースの構造:
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これはあなたを助けることができます。 –
多かれ少なかれです。 –