Указан неверный аргумент для foreach при получении данных из модели - PullRequest
0 голосов
/ 08 февраля 2019

Я использую CodeIgniter.Я получаю сообщение об ошибке

Message: `Invalid argument supplied for foreach()`.

Давайте объясним вам подробнее.Ниже приведен код, который я использую в контроллере

  $send->customer_id=1;//This is just for information

  $fetchdata=$this->Member_model->getAll($send->customer_id);

Я получил вывод.Я нашел two записей, которые относятся к 1

    Array
(
    [0] => stdClass Object
        (
            [member_id] => 825
            [customer_id] => 123
            [profile_pic] => sbc.jpg
            [first_name] => Shagun
        )

    [1] => stdClass Object
        (
            [member_id] => 
            [customer_id] => 
            [profile_pic] => abfg.jpg
            [first_name] => Mayra 
        )

)

Просто обратите внимание, что я не получаю member_id и customer_id во втором массиве.

Нижеэто код модели, который я получаю, выводя

Модель

public function getAll($id){
    $get_s_member = array('members.is_Approved'=>1,'relation_member.primary_customer_id' =>$id);
        $this->db->select('*');
        $this->db->from('members'); 
        $this->db->join('relation_member', 'relation_member.secondary_member_id = members.member_id','LEFT');
        $this->db->join('relations', 'relations.relations_id = relation_member.relation_with_primary_member','LEFT'); 
        $this->db->join('membership_details', 'members.member_id = membership_details.member_id','LEFT'); 
        $this->db->where($get_s_member);
        $query = $this->db->get();
        $res   = $query->result();
     return $res;
  }

Почему я получаю пустое значение, потому что в таблице membership_details нет записи.Мне нужно, чтобы хотя бы таблица членов отображала там все записи.

Я должен передать member_id здесь

$allData['allActivitys']=$this->Member_model->getActivity($member_id);

foreach ($allData['allActivitys'] as $key => $sec_activities) {

}

Модель

public function getActivity($gotSecondaryMemberId){
        $getDetails = array('members.member_id'=>$gotSecondaryMemberId);
$result = $this->db->where($getDetails)
                ->select('*')
                ->from('members')
                ->join('relation_member', 'relation_member.secondary_member_id = members.member_id')
                ->join('relations', 'relations.relations_id = relation_member.relation_with_primary_member')
                ->join('member_activity', 'members.member_id = member_activity.member_id','LEFT')
                ->join('activity_name', 'activity_name.activity_name_id = member_activity.activity_id','LEFT')
                ->get()
                ->result();

    if($result)
    {
         return $result;  
    }
    else 
    {
       return 0;  
    }

  }

, но это происходит только первыммассив и во вторичной ошибке это сообщение об ошибке: Invalid argument supplied for foreach().

1 Ответ

0 голосов
/ 08 февраля 2019

Вы должны просто добавить несколько if условий перед foreach loop

$allData['allActivitys']=$this->Member_model->getActivity($member_id);
if(!empty($allData) && isset($allData['allActivitys'] )){
    foreach ($allData['allActivitys'] as $key => $sec_activities) {
        //your code goes here
    }
}
...