Postingan lainnya
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 ??
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++;
}
}