CodeIgniter - chỉ trả về một hàng?


77

Hiện tại, nếu tôi đang thực hiện một truy vấn trên cơ sở dữ liệu chỉ trả về một hàng, hãy sử dụng:

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

Có chức năng CodeIgniter để trả về hàng đầu tiên không? cái gì đó như$query->row();

Hoặc thậm chí tốt hơn là khả năng, nếu chỉ có một hàng, chỉ sử dụng đối tượng truy vấn trực tiếp.

ví dụ $query->campaign_id;

Câu trả lời:


140

Bạn vừa trả lời câu hỏi của chính mình :) Bạn có thể làm như sau:

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

Bạn có thể đọc thêm về nó tại đây: http://www.codeigniter.com/user_guide/database/results.html


2
$row = json_decode($query->row(), true);đã kết thúc bằng cách sử dụng -> $row = $query->result_array()[0];
CrandellWS

30

Đây là cách tốt hơn vì nó cho bạn kết quả là một dòng:

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

Làm thế nào chúng ta có thể sử dụng điều này như toán tử bậc ba? (query)?(getresult) : (null)
Znaneswar 19/02/19

13

Để thêm vào những gì Alisson đã nói, bạn có thể kiểm tra xem có hàng nào được trả lại hay không.

// 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

8

Để làm rõ mã rằng bạn đang có ý định lấy hàng đầu tiên, CodeIgniter hiện cho phép bạn sử dụng:

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

Để lấy hàng đầu tiên.



2

Nếu bạn yêu cầu chỉ lấy một bản ghi từ bảng cơ sở dữ liệu bằng cách sử dụng truy vấn codeigniter thì bạn có thể thực hiện bằng cách sử dụng row (). chúng ta có thể dễ dàng trả về một hàng từ cơ sở dữ liệu trong codeigniter.

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

1

Thay đổi chỉ trong hai dòng và bạn đang thực sự nhận được những gì bạn muốn.

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

thử nó.


0

Chúng tôi có thể nhận được một giới hạn sử dụng duy nhất trong truy vấn

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

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


-3

lớp nhận_mẫu mở rộng 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;
 }

}

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.