Chà, chúng ta hãy cố gắng đơn giản hóa vấn đề này. Về cơ bản, bạn đang cố gắng tìm cách kết nối hai người dùng với nhau.
Vì tôi đang cố gắng giữ mọi thứ đơn giản và chắc chắn không ngụ ý rằng đây là cách tốt nhất để làm điều đó, tôi nghĩ dễ nhất cách tiếp tục để thực hiện việc này là tạo một bảng mới (users_friends) với các trường sau:(user_id) và (friend_id).
Chà, giả sử user_id của tôi là 5, user_id của bạn là 10.
Tôi muốn thêm bạn làm bạn của tôi, do đó tôi sẽ thêm một mục vào bảng mới tạo đó với các giá trị sau:user_id =5, friend_id =10.
Vì vậy, giả sử bạn muốn hiển thị tất cả bạn bè của tôi, bạn có thể chạy một truy vấn như:
SELECT * FROM `users` WHERE `user_id` IN ( SELECT `friend_id` FROM `users_friends` WHERE `user_id` = '5' );
Chắc chắn rồi, xóa một người bạn rất dễ dàng, tất cả những gì bạn phải làm là xóa mục nhập khỏi bảng mới tạo ...
DELETE FROM `users_friends` WHERE `user_id` = '5' AND `friend_id` = '10';
Và poof, bạn đột nhiên không phải là bạn của tôi nữa;)
Vì vậy, đây là những điều cơ bản. Tôi sẽ thử giải pháp này trước khi chuyển sang một giải pháp cho phép bạn linh hoạt hơn.