Codeigniter Query Chaining - PullRequest
       2

Codeigniter Query Chaining

1 голос
/ 24 февраля 2012

Я работаю над запросом в Codeigniter и стараюсь, чтобы он выглядел чистым.Я даже еще не добавил большинство полей и вижу, что они становятся громоздкими, особенно с select_sum.

Есть ли более чистый способ их записи или способ их комбинирования?

$this->db->select('Map');
$this->db->select_sum('Kills')->select_sum('Deaths')->select_sum('Win')->select_sum('Loss')->select_sum('Win + Loss', 'GP');
$this->db->from('games');
$this->db->where('Name', $player_name);
$this->db->join('players', 'players.PlayerID = games.PlayerID');
$this->db->join('gameinfo', 'games.GameID = gameinfo.GameID');
$this->db->group_by('Map'); 
$this->db->order_by('Kills', "desc"); 
$this->db->limit(10);

$query = $this->db->get();

return $query->result_array();

Ответы [ 3 ]

3 голосов
/ 24 февраля 2012

Необработанный SQL - мое предложение.

$name = $this->db->escape($player_name);

$sql = "
    SELECT Map, SUM(Kills), SUM(Deaths), SUM(Win), SUM(Loss), SUM(Win + Loss) AS GP
    FROM games
    JOIN players ON (players.PlayerID = games.PlayerID)
    JOIN gameinfo ON (games.GameID = gameinfo.GameID)
    WHERE Name = $name
    GROUP BY Map
    ORDER BY Kills DESC
    LIMIT 10
";

$query = $this->db->query($sql);

return $query->result_array();

По моему мнению, если только мы сможем сделать красивый отступ, он будет гораздо более читабельным, чем версия активной записи CI.

1 голос
/ 24 февраля 2012

Я использую подобное, как это:

$this->db->select("map_name")
     ->from("maptables")
     ->where("maptables.id",2);

Для меня это читабельно:)

(я создал собственную библиотеку, которая похожа на AR - потому что в AR есть некоторые ошибки)

0 голосов
/ 25 февраля 2012

Вы также можете написать это таким образом, на мой взгляд, это более читабельно

 $this->db->select('Map, SUM(Kills), SUM(Deaths), SUM(Win), SUM(Loss), SUM(Win + Loss, GP)');
 $this->db->from('games');<br />
 $this->db->where('Name', $player_name);<br />
 $this->db->join('players', 'players.PlayerID = games.PlayerID');<br />
 $this->db->join('gameinfo', 'games.GameID = gameinfo.GameID');<br />
 $this->db->group_by('Map');<br />
 $this->db->order_by('Kills', "desc");<br />
 $this->db->limit(10);<br />

 $query = $this->db->get();

 return $query->result_array();`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...