2017-09-04 23 views
0

私のビューで関数を作成してPHP関数内でクエリを作成しようとしましたが、私は取得していません。キャリア全員がこのエラーを取り除くために私を助けることができますか?PHP関数内でdbクエリを実行することができません

Severity: Error --> Using $this when not in object context /application/views/includes/create_calendar.php 51 

これは、これがあれば、私は、CodeIgniterの使用状況では、クエリビュー/含ん/ create_calendar.php

function getCalender($year = '',$month = '') { 
    $sql  = $this->db->get('calendar'); 
    if($day == $sql->row()->day_off) { $per_off = $sql->row()->per_off; } 

         echo "<p>".$day." Off</p>"; 
} 
+0

私は自分の答えを更新しました。なぜそれが起こっているのかを知るには、これを参照してください:http://php.net/manual/en/language.variables.scope.php –

答えて

1

を実行しようとしていたファイルである私のコントローラ

class Booking extends CI_Controller { 
    public function __construct() { 
     parent::__construct(); 
     $this->load->helper(array("form", "url")); 
     $this->load->library('session'); 
     $this->load->database(); 
    } 

    public function get_calendar() { 
     $this->load->view('includes/create_calendar'); 
    } 
} 

です「スーパーオブジェクト」で使用できるクラスの1つを使用する必要がある場合は、最初にスーパーオブジェクトのインスタンスを取得する必要があります。

$CI =& get_instance(); 
$CI->db->get('calendar'); 

このDBクラスはロードされていない場合もあります。その場合は、その後、あなたがDBを使用する前に:

class Test { 

    public $foo = 'bar'; 

    public function index() { 
     function baz(){ 
      return $this->foo; 
     } 
     echo baz(); 
    } 
} 

$t = new Test; 
$t->index(); 

$CI->load->database(); 

はできるだけ早くあなたがその機能に行くように、明確にするために、あなたはこの簡単なテストのように、変数のスコープから$これを削除しました

次のような何かを行うことができますが、それは本当に厄介です:

class Test { 

    public $foo = 'bar'; 

    public function index() { 
     function baz($x) { 
      return $x->foo; 
     } 
     echo baz($this); 
    } 
} 

$t = new Test; 
$t->index(); 

あなたがするための最善のことは、あなたがやっていることを行うには別のクリーンな方法を見つけることです。あなたは通常、あなたのビューであなたのデータベースと関数への呼び出しを望んでいません。それは、MVCのすべてについてのことです。

+0

しかし、何度も私はそれがうまく動作するビュー内でクエリを呼び出そうとしましたが、なぜこのエラーが来ましたか今すぐ –

+0

あなたのコードに基づいて、私はあなたにその理由を伝えることはできません。私は、CodeIgniterスーパーオブジェクトが存在しないときに、これがどのようにCodeIgniterスーパーオブジェクトに到達するかを説明しています。それは図書館、ヘルパー、または他の場所でも起こり得る。私は変数スコープがここに出てくるだろうと思う。あなたは機能の中にいます。 –

関連する問題