A CodeIgniter hozzáférést biztosít a Query Builder osztályhoz. Ez a mintázat lehetővé teszi az információk lekérését, beillesztését és frissítését az adatbázisban. Az egyszerűség kedvéért a Query Builder funkciók egyik legfontosabb előnye, hogy lehetővé teszi adatbázis-független alkalmazások létrehozását, mivel a lekérdezés szintaxisát az egyes adatbázis-adapterek generálják.

Adatok lekérdezése

A get() függvény lekéri egy tábla összes sorát.

$query = $this->db->get('mytable');  // Produces: SELECT * FROM mytable

A get() függvéy hívásakor lehetőségünk van megadni második és harmadik paramétert is amivel limitálni tudjuk a lekérdezés által visszaadott sorokat.

$query = $this->db->get('mytable', 10, 20);

// Executes: SELECT * FROM mytable LIMIT 20, 10

A get_compiled_select() visszaadja a lekérdezést sztringként.

$sql = $this->db->get_compiled_select('mytable');
echo $sql;

// Prints string: SELECT * FROM mytable

A get_where() függvénnyel a lekérdezéshez WHERE záradékot adhatunk hozzá.

$query = $this->db->get_where('mytable', array('id' => $id), $limit, $offset);

Ha nem szeretnénk a tábla összes oszlopát lekérni akkor használjuk a select() függvényt.

$this->db->select('title, content, date');
$query = $this->db->get('mytable');

// Executes: SELECT title, content, date FROM mytable

A select_max függvény egy adott mezőnév alapján visszaadja a legnagyobb értékű sort, második paramétere opcionális, aliast-t adhatunk a mező nevének.

$this->db->select_max('age');
$query = $this->db->get('members');  // Produces: SELECT MAX(age) as age FROM members

$this->db->select_max('age', 'member_age');
$query = $this->db->get('members'); // Produces: SELECT MAX(age) as member_age FROM members

A select_min függvény egy adott mezőnév alapján visszaadja a legkisebb értékű sort, második paramétere opcionális, aliast-t adhatunk a mező nevének.

$this->db->select_min('age');
$query = $this->db->get('members'); // Produces: SELECT MIN(age) as age FROM members

A select_avg átlagot ad vissza, második paramétere opcionális, aliast-t adhatunk a mező nevének.

$this->db->select_avg('age');
$query = $this->db->get('members'); // Produces: SELECT AVG(age) as age FROM members

A select_sum egyértelműen összeget ad vissza, második paramétere opcionális, aliast-t adhatunk a mező nevének.

$this->db->select_sum('age');
$query = $this->db->get('members'); // Produces: SELECT SUM(age) as age FROM members

A from() függvénnyel megadhatjuk, hogy melyik táblából szeretnénk adatokat lekérni.

$this->db->select('title, content, date');
$this->db->from('mytable');
$query = $this->db->get();  // Produces: SELECT title, content, date FROM mytable

A join() függvénnyel táblákat tudunk összekapcsolni.

$this->db->select('*');
$this->db->from('blogs');
$this->db->join('comments', 'comments.id = blogs.id');
$query = $this->db->get();

// Produces:
// SELECT * FROM blogs JOIN comments ON comments.id = blogs.id

A where() függvénnyel feltételeket tehetünk a lekérdezésünkbe.

$this->db->where('name', $name); // Produces: WHERE name = 'Joe'

Akár többet egymás után.

$this->db->where('name', $name);
$this->db->where('title', $title);
$this->db->where('status', $status);
// WHERE name = 'Joe' AND title = 'boss' AND status = 'active'

Egyéb összehasonlítások.

$this->db->where('name !=', $name);
$this->db->where('id <', $id); // Produces: WHERE name != 'Joe' AND id < 45

A where() függvénynek tömböt is adhatunk át.

$array = array('name' => $name, 'title' => $title, 'status' => $status);
$this->db->where($array);
// Produces: WHERE name = 'Joe' AND title = 'boss' AND status = 'active'

Természetesen a where záradékot magunk is megírhatjuk.

$where = "name='Joe' AND status='boss' OR status='active'";
$this->db->where($where);

A where_in függvény

$names = array('Frank', 'Todd', 'James');
$this->db->where_in('username', $names);
// Produces: WHERE username IN ('Frank', 'Todd', 'James')

A like() függvénnyel keresni tudunk az adatbázisban.

$this->db->like('title', 'match');
// Produces: WHERE `title` LIKE '%match%' ESCAPE '!'

Ugyanúgy mint a where függvénynél úgy itt is többször meghívhatjuk.

$this->db->like('title', 'match');
$this->db->like('body', 'match');
// WHERE `title` LIKE '%match%' ESCAPE '!' AND  `body` LIKE '%match% ESCAPE '!'

Tömböt is adahtunk át a like() függvénynek.

$array = array('title' => $match, 'page1' => $match, 'page2' => $match);
$this->db->like($array);
// WHERE `title` LIKE '%match%' ESCAPE '!' AND  `page1` LIKE '%match%' ESCAPE '!' AND  `page2` LIKE '%match%' ESCAPE '!'

A group_by() függvény használata.

$this->db->group_by("title"); // Produces: GROUP BY title

Egyértelműen több paramétert is kaphat.

$this->db->group_by(array("title", "date"));  // Produces: GROUP BY title, date

Adatok rendezése

Az order_by() függvénnyel rendezhetjük az adatokat.

$this->db->order_by('title', 'DESC');
// Produces: ORDER BY `title` DESC

$this->db->order_by('title DESC, name ASC');
// Produces: ORDER BY `title` DESC, `name` ASC

$this->db->order_by('title', 'DESC');
$this->db->order_by('name', 'ASC');
// Produces: ORDER BY `title` DESC, `name` ASC

Ha véletlenszerűen szeretnénk adatot visszakapni.

$this->db->order_by('title', 'RANDOM');
// Produces: ORDER BY RAND()

$this->db->order_by(42, 'RANDOM');
// Produces: ORDER BY RAND(42)

A limit() függvénnyel szabhatjuk meg hogy hány sort adjon vissza a lekérdezés.

$this->db->limit(10);  // Produces: LIMIT 10

A count_all függvény visszaadja egy tábla sorainak számát.

echo $this->db->count_all('my_table');  // Produces an integer, like 25

Adatok feltöltése

Az insert() függvénnyel tudunk adatokat feltölteni egy táblába, első paramétere a tábla neve a második pedig egy tömbb az adatokkal.

$data = array(
        'title' => 'My title',
        'name' => 'My Name',
        'date' => 'My date'
);

$this->db->insert('mytable', $data);
// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date')

A get_compiled_insert() sztringként visszaadja az összeállított sql-t.

$data = array(
        'title' => 'My title',
        'name'  => 'My Name',
        'date'  => 'My date'
);

$sql = $this->db->set($data)->get_compiled_insert('mytable');
echo $sql;

// Produces string: INSERT INTO mytable (`title`, `name`, `date`) VALUES ('My title', 'My name', 'My date')

Az insert_batch függvénnyel egy kéréssel több sort is felvihetünk a táblába.

$data = array(
        array(
                'title' => 'My title',
                'name' => 'My Name',
                'date' => 'My date'
        ),
        array(
                'title' => 'Another title',
                'name' => 'Another Name',
                'date' => 'Another date'
        )
);

$this->db->insert_batch('mytable', $data);
// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date'),  ('Another title', 'Another name', 'Another date')

Adatok frissítése

Az update() függvénnyel átírhatjuk egy adott sor adatait.

$data = array(
        'title' => $title,
        'name' => $name,
        'date' => $date
);

$this->db->where('id', $id);
$this->db->update('mytable', $data);
// Produces:
//
//      UPDATE mytable
//      SET title = '{$title}', name = '{$name}', date = '{$date}'
//      WHERE id = $id

Adatok törlése

A delete() függvénnyel sorokat törölhetünk egy táblából.

$this->db->delete('mytable', array('id' => $id));  // Produces: // DELETE FROM mytable  // WHERE id = $id

 

A szerzőről

Fodor Balázs

Webfejlesztő. Minden érdekel ami IT, ezenkívül videókat készítek és vágok, speciális effekteket készítek, képeket szerkesztek, és nagyon érdekel az IT Security.

Kapcsolódó bejegyzések

Válaszolj

Az e-mail címed nem publikáljuk.