현재 본인의 친구를 가져오는것과, 로그인 하지 않아도 해당 member_srl의 친구를 가져오는것은 성공했습니다.

 

근데, 지금 하고 있는것이 이제 나를 친구로 등록한 사람의 정보를 가져오는(리스트하는) 것을 만들고 있는데요.

 

HTML템플릿 파일에

 

{@

                    $ppm->member_srl = $logged_info->member_srl;
                    $result = executeQuery('schedule.getFriendlista', $ppm);
                    $member_srls = array();
}
 

<!--@foreach($result->data as $key => $val)-->
                    {@$member_srls[] = $val->target_srl;}
                    <!--@end-->
                    {@$obj->member_srls = $member_srls;}
<tr loop="$obj->member_srls => $val" ></tr>같은 형식으로 지정을 했는데, 아직은 왜인지 모를 이유로 나를 추가한 친구의 목록이 출력되지 않습니다.

 

조언을 구하고 싶습니다 ㅠ_ㅠ

 

이 부분만 해결된다면 무엇인가 할 수 있을거 같은데, 자꾸 이 길목에서 막히네요

 

  • profile

    일단 사전 정보가 부족한 게 아닌가 싶은데요.
    $ppm이 어떤 변수인지 잘 모르겠고, schedule 모듈과 getFriendlista라는 쿼리도 코어에 있는 게 아니라서 잘 모르겠어요.

     

    아무튼 $result를 빼올 때, 전체 멤버를 불러오고, 그들의 친구들 중에서 내가 있는지 발견해서, 나를 친구로 가지고 있는 멤버의 정보를 가져오시려는 거겠죠?

    그러려면 db 쿼리를 직접 짜셔야 하지 않을까 싶은데요.
    물론, schedule이란 모듈에 해당 쿼리가 있다면 한결 수월하겠지만요.


    자세한 방법은 저도 쪼르르르..
    (라이믹스 깃허브에 이슈로 올려보시는 것도 좋을 거 같네요ㅎㅎ 그럼 운영진님들이 커뮤니케이션 모듈에 해당 xml 쿼리를 샤샤샥?)

  • profile profile
    앗 그렇군요..

    뭔가 방법은 찾아서 그대로 아예 쿼리를 짤까 생각중이었어요.
    아예 생 sql결과값만 출력해볼까.. 하기도 하고.. 그걸 기반으로 외부페이지를 만들어도 되니까요.

    답변 감사드려요
  • profile profile

    저는 사이트에 친구가 없어서ㅋ 직접 실연은 못해봤는데요.

    이런 식으로 해보면 어떨까 싶어서, 같이 연구해보자는 차원에서 댓글 하나 더 남겨봅니다.

    (그리고 실력도 없는 주제에 머리로만 생각한 거여서 된다는 보장도 없어요ㅎㅎ)

     

    커뮤니케이션 모듈의 xml 쿼리에 getFriends.xml라는 게 있던데,

    이게 입력된 member_srl($logged_info->member_srl)로 친구들을 불러오는 거잖아요?

    이걸 역으로 이용하면 생각보다 간단히 '나를 친구로 등록한 회원 목록'을 만들 수도 있을 거 같아요.

     

    혹시 이런 쿼리를 추가해보면 어떨까요?

    <query id="getFriendsForMember" action="select">
        <tables>
            <table name="member_friend" alias="friend" />
            <table name="member" alias="member" />
        </tables>
        <columns>
            <column name="*" />
        </columns>
        <conditions>
            <condition operation="equal" column="friend.friend_group_srl" var="friend_group_srl" />
            <condition operation="equal" column="friend.target_srl" var="member_srl" pipe="and" />
            <condition operation="equal" column="member.member_srl" var="friend.member_srl" pipe="and" />
        </conditions>
        <navigation>
            <index var="sort_index" default="friend.list_order" order="asc" />
            <list_count var="list_count" default="10" />
            <page_count var="page_count" default="10" />
            <page var="page" default="1" />
        </navigation>
    </query>

     

    즉, 입력된 member_srl($logged_info->member_srl)로 member_friend 테이블에서 target_srl을 검색하고('나를 친구로 등록한 회원들'의 member_srl을 검색하는 것과 동일), 이 친구들의 member_srl로 member 테이블에서 정보를 빼내오는 거죠.

     

    이 파일을 getFriendsForMember.xml 따위로ㅋ 쿼리 폴더에 저장한 다음, 스킨이나 외부페이지에서 불러오면...

    어떻게 될까요? 안 된다면, 저는 뭐 다시 쪼르르르....

     

    (다른 분들께서도 검증해보시거나 조언 주시면 좋을 것 같아요!)

  • profile profile
    어멋 거의 다 구현이 된거 같아 보이네요

    전 현재

    friend.html 에

    {@
    $oMemberModel = getModel("member");
    $member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
    }



    {$args = $member_info->member_srl;}
    {$output = executeQuery('communication.getFriendsForMember',$args);}

    와 같이 출력을 했는데 아무런 반응이 없더라구요.

    $args->member_srl = '{$member_info->member_srl};
    로 해야할지, 아니면 뭔가 다른 방법이 있는건지 잘 모르겠네요 ㅠ_ㅠ
  • profile profile
    '로그인 중인 나'를 친구로 삼은 회원을 뽑아내는 거 맞죠?
    그러면 이 정도로 될 것 같은데요.

    {@
        $args = new stdClass();
        $args->member_srl = $logged_info->member_srl;
        $output = executeQuery('communication.getFriendsForMember',$args);
    }

    이 쿼리가 실제로 먹을지...으악 궁금합니다.
  • profile profile
    아쉽게도 뭔가 나오진 않고 있네요 ;ㅅ;

    지금은 model.php 에 getFriendsForMember를 추가하여 뭔가를 해보려고 하는데, 될듯 하면서도 머리가 백지가 되어가네요.

    슬슬 모듈에 대한 구조가 이해가 되는듯 합니다.
  • profile profile
    으윽, 저도 좀 있다가 들어가서 한번 체크해볼게요!
  • profile profile
    감사드립니다. 저도 그 동안 계속 무언가 시도를 해보겠습니다 >_<
  • profile profile

    음, 저는 결과가 잘 나오는데요.

     

    1) /modules/communication/queries 폴더에 위에서 만들었던 getFriendsForMember.xml을 저장해둠.

     

    2) /modules/communication/skins/default 폴더의 friend.html 파일을 열어 다음 구문을 적당한 곳에 넣음.

    {@
        $args = new stdClass();
        $args->member_srl = $logged_info->member_srl;
        $output = executeQuery('communication.getFriendsForMember',$args);
    }

     

    3) <pre cond="$grant->manager">{print_r($output,true)}</pre> 로 시험 출력해봄.

    그랬더니 나를 친구로 등록한 회원의 정보가 다음과 같이 나옵니다. (나를 등록한 회원이 복수인 경우는 아직 못해봤습니다만ㅎ)

    Object Object
    (
        [error] => 0
        [message] => success
        [variables] => Array
            (
                [_query] => SELECT *  FROM `rx_member_friend` as `friend` , `rx_member` as `member`   WHERE ( `friend`.`target_srl` = ? and `member`.`member_srl` = `friend`.`member_srl` ) and `friend`.`list_order` <= 2100000000   ORDER BY `friend`.`list_order` asc  LIMIT 0, 10
                [_elapsed_time] => 0.00021
            )
    
        [httpStatusCode] => 200
        [total_count] => 1
        [total_page] => 1
        [page] => 1
        [data] => Array
            (
                [1] => stdClass Object
                    (
                        [friend_srl] => 6869
                        [friend_group_srl] => 6872
                        [member_srl] => 4
                        [target_srl] => 3877
                        [list_order] => -6869
                        [regdate] => 20170619001503
                        [repeat_member_srl] => 4
                        [user_id] => cy****
                        [email_address] => cy****@****.com
                        [password] => ****
                        [email_id] => cy****
                        [email_host] => ****.com
                        [user_name] => admin
                        [nick_name] => 윤삼
                        [find_account_question] => 
                        [find_account_answer] => ****
                        [homepage] => 
                        [blog] => 
                        [birthday] => 
                        [allow_mailing] => N
                        [allow_message] => F
                        [denied] => N
                        [limit_date] => 
                        [repeat_regdate] => 20160825012439
                        [last_login] => 20170620162311
                        [change_password_date] => 20170604181239
                        [is_admin] => Y
                        [description] => 
                        [extra_vars] => ****
                        [repeat_list_order] => -4
                    )
    
            )
    
        [page_navigation] => PageHandler Object
            (
                [total_count] => 1
                [total_page] => 1
                [cur_page] => 1
                [page_count] => 1
                [first_page] => 1
                [last_page] => 1
                [point] => 0
            )
    
    )

     

  • profile profile
    이제 확인했네요.

    정상적으로 출력이 되긴 했네요.
    제가 무언가 잘못 건들였나 봅니다 ㅠㅠ

    이제 이걸 가지고 기본 스킨처럼 출력하면 모든게 만사일거 같으니 손을 대봐야겠습니다 ㅎ