2015-07-15 2 views
2

Я строю систему дружбы в Laravel 5, которая требует, чтобы пользователь принимал потенциальную дружбу с другим пользователем.Обновить значение дополнительной сводной таблицы в Laravel 5

Я создал отношения «многие ко многим» между пользователями и «помощниками» (другими пользователями). Отношения выглядеть следующим образом:

// Accepted Friendships 
function friendsOfMine() 
{ 
    return $this->belongsToMany('App\User', 'helpers', 'user_id', 'helper_id') 
    ->wherePivot('accepted', '=', 1); 
} 

// Potential Friendships 
function potentialFriendsOfMine() 
{ 
    return $this->belongsToMany('App\User', 'helpers', 'user_id', 'helper_id') 
    ->wherePivot('accepted', '=', 0); 
} 

Единственное различие между ними является дополнительным значением в моем «хелперов» сводной таблицы: «принято». «Принято» - это логическое значение, которое по умолчанию равно 0.

Я создаю строку таблицы, когда пользователь сначала предлагает дружбу, а затем хотел бы обновить строку, когда дружба будет принята. Вот версия моего контроллера, который конденсируется два действия в одном блоке кода:

public function store() 
{ 
    $currentUser = Auth::user(); 
    $input = Input::get('helper_id'); 
    $helper = User::find($input); 

    /* Creates "unaccepted" relationship */ 
    $currentUser->friendsOfMine()->attach($helper); 

    /* Fetches newly created relationship */ 
    $accepted = $currentUser->potentialFriendsOfMine()->where('helper_id', $input); 

    /* Updates "accepted" column and saves */ 
    $accepted->pivot->accepted = 1; 
    $accepted->pivot->save(); 
    Flash::success('You are now following this user.'); 
    return Redirect::back(); 
} 

Однако я получаю ошибку на этой линии-$accepted->pivot->accepted = 1; -Вот гласит: Создание объекта по умолчанию с пустым значением.

В этом случае, как мне получить доступ и обновить значение в записи сводной таблицы, которую я только что создал?

+0

жаль, что я запуталась, что стержень снова? стол? – Rash

+0

Привет @Rash, в этом случае у меня сводная таблица под названием «помощники» со значениями «user_id», «helper_id» и «accept». Я изо всех сил пытаюсь понять, как получить доступ и обновить это «принятое» значение. –

+0

hmm..I знаю, что laravel не приносит «чужие» столы, пока вы не скажете им ... вы читали о функции «with()». Если у меня есть таблица User and Helper, я поручаю laravel принести вспомогательную таблицу с помощью User :: with ('helper') -> где() -> get() – Rash

ответ

3

Эта строка: $accepted = $currentUser->potentialFriendsOfMine()->where('helper_id', $input); возвращает объект Builder. Я думаю, вы забыли добавить ->get() в конце, чтобы получить объект model. Другими словами:

$accepted = $currentUser->potentialFriendsOfMine()->where('helper_id', $input)->get(); 

ИЛИ

$accepted = $currentUser->potentialFriendsOfMine()->where('helper_id', $input)->first(); 
Смежные вопросы