У меня есть следующие модели:
- Пользователь
- Устройство
- Группа
Ниже приведены отношения:
User belongsTo a group
Group hasMany Users
Device belongsTo group
Как я могу создать Device
через пользователя?
$user = Auth::user();
$new_device = new Device;
$new_device->ip = $request->input('ip');
$new_device->port = $request->input('port');
$new_device->community_name = $request->input('community_name');
$user->group->save($new_device);
Ошибка при использовании:
$user->group->save($new_device);
Argument 1 passed to Illuminate\Database\Eloquent\Model::save() must be of the type array, object given, called in /home/snmpexperiments/laravel/app/Http/Controllers/SnmpController.php on line 74
Ошибка при использовании:
$user->group()->save($new_device);
Call to undefined method Illuminate\Database\Eloquent\Relations\BelongsTo::save()
Я в некотором замешательстве ... я должен сохранить устройство через группу или я должен сохранить устройство через пользователя?
Модель пользователя
public function group()
{
return $this->belongsTo('App\Group');
}
public function devices()
{
return $this->hasManyThrough('App\Device', 'App\Group'); // So i can get devices like $user->devices
}
Модель группы
public function users()
{
return $this->hasMany('App\User');
}
public function devices()
{
return $this->hasMany('App\Device');
}
public function interfaces(){
return $this->hasManyThrough('App\ModelInterface', 'App\Device'); // So I can get interfaces through Device $group->interfaces
}
Модель устройства
public function interfaces()
{
return $this->hasMany('App\ModelInterface');
}
public function group()
{
return $this->belongsTo('App\Group');
}