I try to save many to many relations inside loop here is the code
$user = User::firstOrCreate(
[
'username' => $member->username,
'email' => $member->email
],
[
'password' => $member->password,
'name' => $member->fullname,
'email' => $member->email,
'firstname' => $member->firstname,
'lastname' => $member->lastname,
'username' => $member->username,
'active' => $member->active
]
);
if ($user) {
$user->account()->firstOrCreate([
'user_id' => $user->id,
],
[
'address' => $member->address,
'phone' => $member->phone,
'web' => $member->web,
'company' => $member->company,
'company_email' => $member->company_email,
'company_phone' => $member->company_phone,
'fax' => $member->fax,
'company_fax' => $member->company_fax,
'has_newsletter' => $member->newsletter,
'published' => $member->listing,
'zip' => $member->zip,
'association_id' => $member->association_id,
'affiliate_id' => $member->affiliate_id,
]);
if ($member->activity_group_ids) {
$user->account()->occupations()->snyc(explode(',',$member->activity_group_ids));
}
$user->assignRole('member');
}
but I keep getting Call to undefined method Illuminate\Database\Eloquent\Relations\HasOne::occupations()
my models:
User
/**
* @return HasOne
*/
public function account()
{
return $this->hasOne(Member::class);
}
Member
/**
* @return BelongsTo
*/
public function user()
{
return $this->belongsTo(User::class);
}
/**
* @return BelongsToMany
*/
public function occupations()
{
return $this->belongsToMany(OccupationGroup::class, 'members_occupational_groups', 'member_id', 'occupation_group_id');
}
OccupationGroup
/**
* @return BelongsToMany
*/
public function members()
{
return $this->belongsToMany(Member::class, 'members_occupational_groups', 'occupation_group_id', 'member_id');
}
What is wrong in this case?