CREATE TABLE `social_activity_stream` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`social_actor_id` int(11) NOT NULL,
`social_activity_id` bigint(20) NOT NULL,
`social_activity_type_id` int(11) NOT NULL,
`social_share_policy_id` int(11) DEFAULT NULL,
`social_user_friend_id` bigint(20) DEFAULT NULL,
`date_created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`date_read` datetime DEFAULT NULL,
PRIMARY KEY (`id`))
Каждый социальный актер создает социальную активность с политикой обмена. ОБЩЕСТВЕННЫЕ, ЧАСТНЫЕ, ДРУЗЬЯ Допустим, есть 3 актера: A, B, C Они друзья
Деятельность, которой А поделился сFRIENDS (политика) создаст 3 строки в таблице:
- Одна для A [A, POST ТЕКСТА, FRIENDS, NULL]
- Одна для B [B, A TEXT POST, ДРУЗЬЯ, A-> B]
- Один для C [C, ТЕКСТ ПОСТ, ДРУЗЬЯ, A-> C]
B хочет просмотреть поток активности A: Вотпсевдопросмотр:
- ПОЛУЧЕНИЕ ОБЩЕСТВЕННОЙ ДЕЯТЕЛЬНОСТИ по потоку A '
- ПОЛУЧЕНИЕ ЧАСТНОЙ ДЕЯТЕЛЬНОСТИ по A'stream с FriendId = A-> B
- ПОЛУЧЕНИЕ ДЕЯТЕЛЬНОСТИ ДРУЗЕЙ поA'stream, но только если эта активность существует в потоке B (в противном случае это может быть для друга D из A, который не является другом B)
Есть идеи, что это можно сделать в одном запросе?