2016-05-29 10 views
0

リージョンとカテゴリの2つのコードがあります。彼らはまったく同じです。PHPで次のエラーを修正するには?

public function getRegion($region_id) { 
    $query = $this->db->query("SELECT DISTINCT *, (SELECT GROUP_CONCAT(cd1.name ORDER BY level SEPARATOR '  >  ') FROM " . DB_PREFIX . "region_path cp LEFT JOIN " . DB_PREFIX . "region_description cd1 ON (cp.path_id = cd1.region_id AND cp.region_id != cp.path_id) WHERE cp.region_id = c.region_id AND cd1.language_id = '" . (int)$this->config->get('config_language_id') . "' GROUP BY cp.region_id) AS path, (SELECT DISTINCT keyword FROM " . DB_PREFIX . "url_alias WHERE query = 'region_id=" . (int)$region_id . "') AS keyword FROM " . DB_PREFIX . "region c LEFT JOIN " . DB_PREFIX . "region_description cd2 ON (c.region_id = cd2.region_id) WHERE c.region_id = '" . (int)$region_id . "' AND cd2.language_id = '" . (int)$this->config->get('config_language_id') . "'"); 

    return $query->row; 
} 

Fatal error: Call to a member function getRegion() on null in C:\wamp64\www\site\catalog\controller\module\latest.php on line 81 

//リージョン

$product_region = array(); 
$regions = $this->model_profile_profile->getProductRegions($result['product_id']); 
foreach ($regions as $region_id) { 

print_r($region_id); // !!! ($region_id = 2) !!! $region_id is not empty !!! 
    $region_info = $this->model_account_region->getRegion($region_id); // LINE 81 

    if ($region_info) { 
     $product_region[] = array(
      'name' => ($region_info['path']) ? $region_info['path'] . ' > ' . $region_info['name'] : $category_info['name'], 
      'href' => $this->url->link('account/profile', '&path=' . $region_info['region_id']) 
     ); 
    } 
} 

そしてここで、おそらくエラーが発生したコードです:カテゴリーの作品のためのコードが、 "地域" は、以下のエラーが返されます私はあなたがコードを与えることによって私を助けていただければ幸いです。私はPHPでダミーだからです。

+0

提案。ハードコードしないでください。 CI dbクラスを使用してみてください... – Fil

+0

@Fil、そのやり方は? – Kardo

+0

これは解決策ではありませんが、これがhttps://codeigniter.com/user_guide/database/index.htmlに役立つと思います。 – Fil

答えて

2
$this->model_account_region //This property is null 

チェック

echo 'FILE : '.__FILE__ .'<br/>'; 
echo 'LINE : '.__LINE__ .'<br/>'; 
echo '<pre>'; 
var_dump(empty($this->model_account_region)); 
echo '</pre>'; 
exit; 
1

model_account_regionモデルクラスが台無しにされます。あなたは時間がなくなっているので。私はあなたが

$region_info = $this->model_profile_profile->getRegion($region_id); // LINE 81 

がすなわちからそれがそのデシベルクラスを使用すると、ライン上であなたの関数を呼び出す前に、この行を追加しますので、正しくロードに失敗した失敗した場合に、それを呼び出してmodel_profile_profileに機能

public function getRegion($region_id) { 
     $query = $this->db->query("SELECT DISTINCT *, (SELECT GROUP_CONCAT(cd1.name ORDER BY level SEPARATOR '&nbsp;&nbsp;&gt;&nbsp;&nbsp;') FROM " . DB_PREFIX . "region_path cp LEFT JOIN " . DB_PREFIX . "region_description cd1 ON (cp.path_id = cd1.region_id AND cp.region_id != cp.path_id) WHERE cp.region_id = c.region_id AND cd1.language_id = '" . (int)$this->config->get('config_language_id') . "' GROUP BY cp.region_id) AS path, (SELECT DISTINCT keyword FROM " . DB_PREFIX . "url_alias WHERE query = 'region_id=" . (int)$region_id . "') AS keyword FROM " . DB_PREFIX . "region c LEFT JOIN " . DB_PREFIX . "region_description cd2 ON (c.region_id = cd2.region_id) WHERE c.region_id = '" . (int)$region_id . "' AND cd2.language_id = '" . (int)$this->config->get('config_language_id') . "'"); 

    return $query->row; 
    } 

をコピー示唆します81

$this->load->database(); 

より多くの課題に直面している場合はお知らせください。私はここに少し退屈です。

関連する問題