Cara menggunakan method dari file Database.php

gan saya sedang belajar pdo kelas absrtrak di sekolah koding dan niatnya mau di gabungin ke mini framework di sekolah koding jadi saya punya file Database.php di folder Core yang isinya ada

 public function where($col, $sign, $value, $bridge = " AND ")
    {
      $this->_query    = "SELECT $this->_column FROM $this->_table WHERE";
      $this->_prevData[] = ["col" => $col, "sign" => $sign, "value" => $value];
      $this->getWhere($bridge);
      return $this;
    }

    public function getWhere($bridge)
    {
      if (count($this->_prevData) > 1) {
        $this->_attr   = "";
        $this->_params = [];
      }
      $x = 1;
      foreach ($this->_prevData as $prev) {
        $this->_attr .= $prev["col"] . " " . $prev["sign"] . " ?";
        $this->_params[] = $prev["value"];

        if ( $x < count($this->_prevData) ) {
          $this->_attr .= $bridge;
        }
        $x++;
      }
      return $this;
    }

dan di BlogController ada

 class BlogController extends Controller
{
    public function index()
    {
      $blogs = $this->model("Blog")->where("id", "=", "1")->where("judul", "=", "artikel pertama");
      return $this->view("Blog.home", ["blogs" => $blogs]);
    }

di model saya punya ini

 public function where($col, $sign, $value)
    {
      $this->_statement = $this->_db->select()->where($col, $sign, $value)->all();
      return ( $this->_statement ? $this->_statement : show_404() );
    }

sebelumnya di model saya udah coba di tampung ke array seperti di database lalu ngirim array tapi gagal, saya bikin simple lagi biar mudah di koreksi. sepertinya masalahnya pemanggilan where di modelnya cuma satu, saya udah coba pake foreach dan coba bikin $this->_statement di isi sampai select dan di foreach di sambung where. itu berhasil tapi statment tersebut ngembaliin semua yang berhubungan dengan select yang ada di database ( jadi ngembaliin banyak ) mungkin gara gara awalnya sampai select() karena ketika di satu bariskan kaya contoh di atas itu normal ( tidak ngembaliin banyak ).

kira kira solusinya gimana ya, ada yang bisa bantu ??

avatar fikriwado
@fikriwado

131 Kontribusi 41 Poin

Dipost 6 tahun yang lalu

1 Jawaban:

btw udah solved gan, baru nemu solusinya..

 public function where($col, $sign, $value)
    {
      $this->_statement = $this->_db->select();
      $this->_prevData[] = ["col" => $col, "sign" => $sign, "value" => $value];
      $this->getWhere();
      return $this;
    }

    public function getWhere()
    {
      $x = 1;
      foreach ($this->_prevData as $prev) {
        if ( $x == count($this->_prevData) ) {
          $this->_statement->where($prev["col"], $prev["sign"], $prev["value"]);
        }
        $x++;
      }
    }
avatar fikriwado
@fikriwado

131 Kontribusi 41 Poin

Dipost 6 tahun yang lalu

Login untuk ikut Jawaban