Ich habe eine sehr komplizierte Funktion in einem meiner CI-Modelle, also versuche ich, es zu optimieren und es robuster zu machen. Ich bin nicht sicher wo genau das Problem ist, also werde ich das Original einfügen (Arbeits) Variante und was ich getan habe, um es besser zu machen. Ich denke in den meisten Fällen sollte es funktionieren, aber obv. Ich habe irgendwo einen Fehler gemacht. HierOpting Active Record in CodeIgniter
ist die ursprüngliche Funktion:
public function get($data)
{
if (isset($data))
{
if (isset($data['sort']))
{
$sort = json_decode($data['sort'], true);
$this->db->order_by($sort[0]['property'], $sort[0]['direction']);
}
if (isset($data['query']) && $data['query'] != '')
{
$fields = json_decode($data['fields'], true);
$where = $fields[0] . " LIKE '%" . $data['query'] . "%'";
unset($fields[0]);
foreach ($fields as $field)
{
$where .= ' OR ' . $field . ' LIKE ' . "'%" . $data['query'] . "%'";
}
$this->db->select('id, email, firstname, lastname, usertype, ts_created, ts_last_login, position');
$this->db->from('users');
$this->db->where($where);
$this->db->limit($data['limit'], $data['start']);
$query = $this->db->get();
$result = $query->result_array();
}
else
{
$this->db->select('id, email, firstname, lastname, usertype, ts_created, ts_last_login, position');
$this->db->from('users');
$this->db->limit($data['limit'], $data['start']);
$query = $this->db->get();
$result = $query->result_array();
}
if ($result != null)
{
return $result;
}
else
{
return null;
}
}
else
{
$query = $this->db->select('id, email, firstname, lastname, usertype, ts_created, ts_last_login, position');
$query = $this->db->get('users');
$result = $query->result_array();
return $result;
}
}
Und hier ist das, was ich getan habe:
public function get($data)
{
if (isset($data))
{
if (isset($data['sort']))
{
$sort = json_decode($data['sort'], true);
$orderCoulmn = $sort[0]['property'];
$orderDir = $sort[0]['direction'];
}
$limit = $data['limit'];
$start = $data['start'];
}
$this->db->select('id, email, firstname, lastname, usertype, ts_created, ts_last_login, position');
/* if (!empty($where))
{
$this->db->where($where);
}*/
if (isset($data['query']) && $data['query'] != '')
{
$fields = json_decode($data['fields'], true);
//$this->db->like($fields[0], $data['query']);
//unset($fields[0]);
foreach ($fields as $filed)
{
$this->db->or_like($field, $data['query']);
}
}
if (!empty($limit) && !empty($start))
{
$this->db->limit($limit, $start);
}
if (!empty($orderColumn) && !empty($orderDir))
{
$this->db->order_by($orderColumn, $orderDir);
}
$query = $this->db->get('users');
$result = $query->result_array();
return $result;
}
Irgendwelche Ideen, wo das Problem in meinem Code sein könnte (der zweite)? Dank Leron
Wenn Sie sprechen uns durch den Code und oder sagen Sie uns, was Sie erreichen möchten, es könnte einfacher sein, Ihnen zu helfen. – Tobias
Nun, ich weiß nicht genau was ich dazu sagen soll. Es ist ein Arbeitsfunktionsteil von einem Arbeitsprogramm. Ein Teil von meiner Lehre ist, den Code zu optimieren. Mit anderen Worten, um es in einer besseren Form umzuschreiben. Sie können sehen, was ich meine, indem ich auf die Originaldatei schaue und was ich jetzt sine gemacht habe. $ data ist eine Variable, die Werte aus einem Suchmenü enthält ... – Leron