Hailwood
Hailwood

Reputation: 92691

CodeIgniter - return only one row?

At the moment if I am doing a query on the database that should only return one row, using:

...query stuff...
$query = $this->db->get();
$ret = $query->result();
return $ret[0]->campaign_id;

Is there a CodeIgniter function to return the first row? something like $query->row();

Or even better would be the ability to, if there was only one row, to just use the query object directly.

e.g. $query->campaign_id;

Upvotes: 87

Views: 285348

Answers (11)

Shakawat Hossain
Shakawat Hossain

Reputation: 103

We can get a single using limit in query

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

Upvotes: 0

Jesvin
Jesvin

Reputation: 489

Option 1 $limit = 1 $offset = 0

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

Option 2

$this->db->get("items")->row();

Upvotes: 0

rahul satone
rahul satone

Reputation: 26

You can do like this

$q  = $this->db->get()->row();

return $q->campaign_id;

Documentation : http://www.codeigniter.com/user_guide/database/results.html

Upvotes: 0

Rahul Kr Daman
Rahul Kr Daman

Reputation: 413

If you require to get only one record from database table using codeigniter query then you can do it using row(). we can easily return one row from database in codeigniter.

$data = $this->db->get("items")->row();

Upvotes: 3

class receipt_model extends CI_Model {

   public function index(){

      $this->db->select('*');

      $this->db->from('donor_details');

      $this->db->order_by('donor_id','desc');

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

      $row=$query->row();

      return $row;
 }

}

Upvotes: -3

Maciej
Maciej

Reputation: 31

$this->db->get()->row()->campaign_id;

Upvotes: 3

Alisson
Alisson

Reputation: 1725

You've just answered your own question :) You can do something like this:

$query = $this->db->get();
$ret = $query->row();
return $ret->campaign_id;

You can read more about it here: http://www.codeigniter.com/user_guide/database/results.html

Upvotes: 154

lalitpatadiya
lalitpatadiya

Reputation: 720

Change only in two line and you are getting actually what you want.

$query = $this->db->get();
$ret = $query->row();
return $ret->campaign_id;

try it.

Upvotes: 2

bnp887
bnp887

Reputation: 5756

To make the code clear that you are intending to get the first row, CodeIgniter now allows you to use:

if ($query->num_rows() > 0) {
    return $query->first_row();
}

To retrieve the first row.

Upvotes: 10

Suresh Kamrushi
Suresh Kamrushi

Reputation: 16086

This is better way as it gives you result in a single line:

$this->db->query("Your query")->row()->campaign_id;

Upvotes: 34

Malachi
Malachi

Reputation: 33720

To add on to what Alisson said you could check to see if a row is returned.

// Query stuff ...
$query = $this->db->get();

if ($query->num_rows() > 0)
{
    $row = $query->row(); 
    return $row->campaign_id;
}

return null; // or whatever value you want to return for no rows found

Upvotes: 14

Related Questions