2016-02-19 2 views
0

Я сделал функцию, которая приводит меня к ошибке:Призыв к неопределенным метод Осветите Database Eloquent Коллекция :: сохранить() Laravel

Call to undefined method Illuminate\Database\Eloquent\Collection::save()

Я не могу понять, почему он бросает

public function multiplelinkPlayerWithFamily($parent_id) 
{ 
    $player_id = Input::get('player_id'); 
    $CheckRelationship = UsersRelationship::where('parent_user_id', $parent_id)->where('child_user_id', $player_id)->first(); 

    if($CheckRelationship) { 
     return Response::json([ 
      'ok'=> false, 
      'message'=> 'The profiles are currently linked ' 
     ] ,422); 
    } 

    $user = User::find($player_id); 

    $user->parent_id = $parent_id; 
    $user->updated_by = $parent_id; 

    $user->save(); 

    $UsersRelationship = new UsersRelationship; 

    $UsersRelationship->parent_user_id = $parent_id; 
    $UsersRelationship->child_user_id = $player_id; 

    $UsersRelationship->save(); 

    $udata = ApiUserController::getLoginUserData(); 

    return Response::json([ 
     'ok'=> true, 
     'message'=> 'Linked', 
     'udata'=> $udata 
    ] ,200); 
} 

ответ

0

Я не вижу, как ваши модели структурированы, но похоже, что вы действительно превратили модель в отношение: ie. $UsersRelationship Похоже, вы пытаетесь настроить отношение «многие ко многим» между пользователями, правильно?

public function parents() 
{ 
    return $this->belongsToMany('User','users_relationships','child_id','parent_id'); 
} 

public function children() 
{ 
    return $this->belongsToMany('User','users_relationships','parent_id','child_id'); 
} 

После того, как вы получили отношения, установленные на право, вы можете позвонить:

$user->parents()->attach($parent_id); 
+0

Как вы думаете, что Samuel эта ошибка вызывает отношения ??? – Priya

+0

Трудно сказать из вашего кода, поскольку я не вижу, как вы настроили свои отношения, но получение этого права может пройти долгий путь ... –

+0

ничего не случилось. Cloete, я не понимаю, что означает эта ошибка – Priya

0

Все наборы мульти-результат, возвращаемый красноречив, либо с помощью метода GET или отношения, будет возвращать коллекция объект. Если результат вашего запроса, скорее всего, вернет более одного значения, Laravel возвращает коллекцию. Понимание методов запросов, возвращающих коллекцию, избавит вас от проблемы вызова метода модели Eloquent в коллекции.

Ваш запрос, скорее всего, вернет более одной записи из базы данных или ни один из базы данных. Это приведет к тому, что «Eloquent» вернет коллекцию, даже если количество найденных записей - One. Поскольку возвращаемое значение представляет собой коллекцию, нам нужно будет перебрать возвращаемый набор, чтобы иметь доступ к отдельной модели.

Так попробуйте заменить код ниже:

$user = User::find($player_id); 

$user->parent_id = $parent_id; 
$user->updated_by = $parent_id; 
$user->save(); 

и заменить его, как, как приведено ниже:

$user = User::find($player_id); 
$user->each(function($user) 
{ 
    $user->parent_id = $parent_id; 
    $user->updated_by = $parent_id; 
    $user->save(); 
}); 

Надеется, что это может работать.

+0

вы также можете использовать простой метод foreach looping также для циклического прохождения возвращаемого набора, чтобы иметь доступ к индивидуальная модель. –

+0

like: foreach ($ user as $ user) { $ user-> parent_id = $ parent_id; $ user-> updated_by = $ parent_id; $ user-> save(); } –

Смежные вопросы