2016-07-11 7 views
0

컨트롤러에서 조직 이름을 얻을 수 있지만보기에 전달하면 오류가 있습니다. foreach()에 대해 잘못된 인수가 제공되었습니다.컨트롤러에서 변수로 변수를 전달합니다.

Error Message

이것은 내 코드입니다.

컨트롤러

public function index() 

{ 
    $user_id = $this->session->userdata('user_id'); 
    $data['title'] = "User"; 
    $getID['orgID'] = $this->userModel->getOrganizationID($user_id); // used my session user_id to 
    foreach ($getID['orgID'] as $orgID) 
    { 
    $org_id = $orgID->org_id; 

    $getName['myOrganization'] = $this->userModel->myOrganization($org_id); 

    foreach($getName['myOrganization'] as $orgName) 
    { 
    $name = $orgName->org_name; 
    $data['name'] = $name; 
    } 
    } 
    $this->load->view('xxxx/xxxx/xxxx',$data); 

모델

public function getOrganizationID($user_id) 
    { 
     $this->db->select('org_id'); 
     $this->db->from('organization_members'); 
     $this->db->where('user_id', $user_id); 
     $query = $this->db->get(); 
     return $query->result(); 

    } 
    public function myOrganization($org_id) 
    { 
     $this->db->select('org_name'); 
     $this->db->from('tblorganization'); 
     $this->db->where('org_id', $org_id); 
     $query = $this->db->get(); 
     return $query->result(); 

    } 

My output

먼저 배열 $ getID [ 'orgID'] 내 결과 = $ this-> userModel -> getOrganizationID ($ user_id); user_id 세션을 사용하여 사용자의 모든 org_id를 가져 왔습니다.

두 번째 배열은 $ getName [myOrganization '] = $ this-> userModel-> myOrganization ($ org_id); 나는 org_id (이전의 메서드에서)를 사용하여 사용자의 모든 org_name을 가져 왔습니다.

+1

'$ this-> userModel-> myOrganization ($ org_id)'의 반환 값은 무엇입니까? –

+0

또한 전달하는'$ ord_id' 매개 변수의 값은 무엇입니까? – Goose

+0

$ org_id는 $ this-> userModel-> myOrganization ($ org_id)에 전달됩니다. $ this-> userModel-> myOrganization ($ org_id)의 리턴 값은 int입니다. 문자열의 배열, 내 출력을 확인하십시오. – Holow

답변

0

더 많은 결과가 하나 있습니까? 왜냐하면 그 결과가 하나뿐이라면 $ query-> row();를 사용할 수 있습니다. foreach를 완전히 제거하십시오.

항상 데이터베이스 메소드가 작동하는지 확인하고 데이터베이스 호출을 수행 할 때마다 리턴 값을 실제로 가져야합니다. 그래서 데이터베이스 메소드에서 if 조건을 추가하도록 하겠지만 짧게는 아무 것도 돌아 오지 않으면 FALSE를 리턴해야합니다. 따라서 데이터베이스 메소드는 컨트롤러에서이를 수행하는 한 방법입니다. $ getID [ 'orgID']는 매우 어색합니다. 회원 테이블에서 결과를 다시 얻으므로 멤버로 호출하십시오.

$getID['orgID'] = $this->userModel->getOrganizationID($user_id); 

먼저 배열 $getID['orgID']을 설정하는 것이 아니라 단지 $memberships = ... 같은 것을 사용 :

// check for the negative first - if no members came back 
if(! $members = $this->userModel->getOrganizationID($user_id)) 
{ 
    // if no results back leave this method 
    // pass the user id so you can echo it out in the error page 
    $this->showNoResultsFor($user_id) ; 
} 
else{ 

    foreach ($members as $member) 
    { 

    $org_id = $member->org_id; 

    // etc etc etc 
+0

하나 이상의 결과를 얻고 있기 때문에 배열로 선언합니다 .. – Holow

+0

ok ... 위와 유사한 오류 검사를 수행하는 것이 좋습니다. 그리고 코드에서 모델 메서드의 객체를 반환합니다. 배열을 원한다면 $ query-> result_array();로 변경하십시오. – cartalot

+0

내 모델을 $ query-> result_array()로 변경했습니다. 나는 여전히 "객체가 아닌 객체의 속성을 얻으려고 시도하는 중"오류가 있습니다. – Holow

0

나는 CodeIgniter의 전문가하지만 코드를 찾는 게 아니에요 당신이 설정하는 이유 궁금 ; 왜 배열을 캐스팅하는지 잘 모르겠습니다.

둘째, 당신이 그것을 인스턴스화하지 않고 모델 클래스를 참조 할 것 :

$this->userModel->getOrganizationID($user_id); 

을 아마도 CodeIgniter의 마법을합니까? $this 인스턴스를 참조하고 표시 한 코드에서 모델이 분리 된 클래스/파일에있을 가능성이 높습니다. 컨트롤러의 생성자에서 인스턴스화하지 않는 한 $this->userModel이 참조되는 방식이 명확하지 않습니까?

foreach에 유효한 개체/배열을 제공하지 않아 오류가 발생하는 것으로 보입니다. 실제로 테스트를 시작하면 실제로 $this->userModel->getOrganizationID($user_id)에서 유효 기간이 만료됩니다.

+0

내 생성자에서 userModel을 선언했고 이미 myOrganization 및 getOrganizationID 메소드를 확인했다. 결과가 있습니다. 출력물을보고 싶습니까? – Holow

관련 문제