2012-09-28 2 views
0

나는 사용자가 각 프로필을 좋아할 수있는 능력을 제공하고자하는 소규모 사이트가 ajax입니다.Fuelphp orm을 가진 논리처럼

논리가 이것인데, 사용법이 클릭처럼 삽입되면, 사람이 이미 좋아하고 데이터베이스에있는 것이 삭제되면 레코드가 삭제됩니다.

컨트롤러가 이렇게 보입니다.

public function action_like() 
    { 
     $response = Response::forge(); 
     $like = Model_Like::forge(); 
     $like->user_id = Input::post('user_id'); 
     $like->liked_by = Session::get('sentry_user'); 
     // find if the user already liked 
     $row = Model_Like::find(array($like->user_id, $like->liked_by)); 
     //if liked remove from database 
     if($row): 
      $response->body(json_encode(array(
       'status' => 'no', 
      ))); 
      $row->delete(); 
     else: 
      $response->body(json_encode(array(
       'status' => 'yes', 
      ))); 
      $like->save(); 
     endif; 

     return $response; 
    } 

자바 스크립트

$('button.like').on('click', function(){ 
    var likeId = $(this).data('like') 
    valPlus = parseInt($('.like-total').text()) + 1;; 
    $.ajax({ 
     type: "POST", 
     url: site_url + 'profile/like/', 
     data: {user_id: likeId}, 
     dataType: "json", 
     context: this, 
     //async: false, 
     beforeSend: function(data) { 
      $(this).attr('disabled', 'disabled'); 
     }, 
     success: function(data) { 
      console.debug(data); 
      if(data.status == "yes") { 

       $('.like-total').text(valPlus); 
      } 
     }, 
     complete: function(data) { 
      $(this).removeAttr('disabled', 'disabled'); 
     } 
    }) 


}); 

그래서 문제는 $row 항상 null을 retunrs이다, 그래서 삽입 항상 두 아이디의를 locateing하고 있지 않습니다.

내가 누락 된 내용을 누군가에게 알려주시겠습니까?

고맙습니다.

+0

'Model_Like'는 어떻게 정의 되었습니까? – Savageman

답변

1

"Where"에 오류가 있다고 생각합니다. 이걸로해볼 수 있니? 와

$row = Model_Like::find()->where(array(
    array('user_id', $like->user_id), 
    array('liked_id', $like->liked_by) 
)); 

당신 어디 ID를 가진 레코드를 검색 "어디" "$ 같은 -> USER_ID"와 "$ 같은 -> liked_by"가 아니라 둘 다 단일 행.

0

여기에 비슷한 질문이 있습니다.() 찾을 매개 변수로 기본 키가 필요합니다

당신은 문서 당으로

Model_Like::find_by_user_id_and_liked_id($like->user_id, $like->liked_by); 
0

을 할 수 있습니다.

"Marco Pace"및 "notrab"에서 언급 한 솔루션을 사용하여 쿼리를 실행할 수 있습니다. 첫 번째 경우,

Model_Like::query() 

하지

Model_Like::find() 

다만 어떤 매개 변수를 전달하지 것은 그것이 '아무튼 때문에 ORM의 쿼리 객체가 반환되는 오류 상황이기 때문에 작업 할 일이 마지막 하나를 사용 무엇을 찾을 지 알지 못한다. 이 동작은 이후 버전에서 변경 될 수 있습니다.