Быстрый ответ
Конечно, у вас не может быть двух функций с одинаковым именем. В вашем случае попробуйте использовать более конкретные имена для каждой функции:
public function createdEvents()
{
return $this->hasMany('App\Event');
}
public function joinedEvents()
{
return $this->belongsToMany('App\Event');
}
Рекомендация
Вы можете использовать одно отношение many-to-many
для управления обоими отношениями с помощью Сводная информация :
users
таблица
events
стол
event_user
стол
Затем при создании события свяжите объекты user
и event
и установите для поля is_creator
значение TRUE
.
Так в вашей User
модели:
приложение / User.php
public function events()
{
return $this->belongsToMany('App\Event')->withPivot('is_creator');
}
Затем в вашем контроллере, когда вы хотите создать событие:
приложение / Http / Контроллеры / SomeCoolController.php
public function store(CreateEventRequest $request)
{
// Get your event data
$data = $request->only(['your', 'event', 'fields']);
// create your object
$newEvent = Event::create($data);
// create the relationship with the additional pivot flag.
auth()->user()->events()->attach($newEvent, ['is_creator' => true]);
// the rest of your code.
}
А когда пользователь хочет присоединиться к событию:
приложение / Http / Контроллеры / SomeCoolController.php
public function join(JoinEventRequest $request)
{
// Get the event
$event = Event::find($request->event_id);
// relate the ev
auth()->user()->events()->attach($newEvent, ['is_creator' => false]);
// or just this, because its already set to false by default:
// auth()->user()->events()->attach($newEvent);
// the rest of your code.
}