2016-09-22 4 views
0

User->post->likesLaravel для социальных сетей

Я строю социальную сеть. У меня есть Пользователи и Должности. для как понятия, которое я создал таблицу (Симпатия): _______________________ |id | post_id | user_id | | | | |

Я хочу показать человек, которые любят пост ниже каждый пост. , поэтому мне нужно сохранить строку для каждого Нравится . Моя проблема Красноречивым и как сохранить Like ряд

$post = Post::find($request->postId); 
    $like = new Likes(); 
    $user = $request->user(); 
    $post->likes()->save($like, $user); 
    return 'done'; 

этот код установлен user_id (Любит Tabel) 0

есть лучший способ Как концепции?

+0

Концепция в порядке, вот как вы относитесь к таким отношениям. – GiamPy

+0

Если вам нравятся только сообщения, это нормально, но если в будущем вам понадобятся комментарии, фотографии или т. Д., Вы должны рассмотреть возможность использования полиморфных отношений https://laravel.com/docs/5.2/eloquent -relationships # полиморфных-отношений – TheFallen

ответ

2

в вашем использовании контроллера этот метод: общественная функция postLikePost (Request $ запрос) { $ post_id = $ запрос [ 'сообщения дан']; $ is_like = $ request ['isLike'] === 'true'? правда, ложь; $ update = false; $ post = Post :: find ($ post_id); если (! $ Post) { возвращение null; } $ user = Auth :: user(); $ like = $ user-> likes() -> где ('post_id', $ post_id) -> first(); if ($ like) { $ понравилось = $ like-> likes; $ update = true; if ($ loved == $ is_like) { $ like-> delete(); return null; } } else { $ like = new Like(); // die ($ like); }

$like->likes = $is_like; 
    $like->user_id = $user->id; 
    $like->post_id = $post->id; 
    if($update){ 
     $like->update(); 
    } 
    else{ 
     $like->save(); 
    } 
    return null; 
    }