2011-07-29 36 views
6

Tôi mới vào Bánh và cố gắng tìm ra giải pháp tốt nhất để lấy một lĩnh vực cụ thể thuộc một $ id:CakePHP: Lấy lĩnh vực bảng cụ thể trong điều khiển

Đây là chức năng quan điểm của tôi trong bộ điều khiển bài viết của tôi

function view($id = null) { 
    if (!$id) { 
     $this->Session->setFlash(__('Invalid post', true)); 
     $this->redirect(array('action' => 'index')); 
    } 
    $this->set('post', $this->Post->read(null, $id)); 
} 

Trong bảng bài đăng, có một khóa người dùng là người nước ngoài. Tôi cần truy xuất trường cụ thể này thuộc về $ id bài đăng này.

Tôi đọc về các chức năng như find ('Tất cả), read() hoặc chỉ cần thả một phiên độc đáo trong giao diện thông qua:

$session->write('example') = $post['Post']['user_id]; 

cách tốt nhất để làm điều này là gì, sở thích của tôi là để lấy trường trong bộ điều khiển. Cảm ơn!

Trả lời

18

CakePHP có lĩnh vực chức năng mà nên làm việc đó.

$this->Post->id = $id; 
$user_id = $this->Post->field('user_id'); 

Để biết thêm thông tin về việc sử dụng lĩnh vực, xem: http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#model-field

Một lựa chọn thứ hai là sử dụng tìm chức năng và trở về chỉ có một vài lĩnh vực nếu bạn không muốn toàn bộ đối tượng Post. Cũng được hiển thị bên dưới là sử dụng điều kiện thay vì đặt Bài đăng hiện tại.

$this->Post->find('first', array(
    'conditions'=>array('id'=>$id), 
    'fields'=>array('user_id') 
)); 

Thông tin thêm về tìm hiện có sẵn tại địa chỉ: http://book.cakephp.org/2.0/en/models/retrieving-your-data.html

+0

Cảm ơn Ryan vì cả hai lựa chọn, nó hoạt động giống như một sự quyến rũ! – ChrisDK

+0

Tuyệt vời. Sử dụng CakePHP chức năng tìm và trường được sử dụng tất cả các thời gian vì vậy nó có giá trị đọc lên trên chúng bao gồm cả Tìm điều kiện phức tạp: http://book.cakephp.org/view/1030/Complex-Find-Conditions – Ryan

+0

Cảm ơn Ryan, sẽ kiểm tra nó ra. Chỉ cần nhấn Find() sẽ được thay thế bằng createQuery trong Cake 2.0 – ChrisDK

1
$this->Post->id = $id; 
$this->Session->write('example',$this->Post->field('user_id')); 
+1

Không nhận thức được phương thức 'Model-> field()'. Cảm ơn thông tin. Có lẽ nên đào qua API Cake nhiều hơn ... nhưng than ôi. – cspray

+0

yep, cũng có 'saveField ('field_name', value)';) –

0

Hãy thử thế này, kể từ khi tôi không biết lĩnh vực (s), bạn cần tôi cung cấp một mảng lĩnh vực ví dụ thiết lập sử dụng ma thuật Tìm loại:

$fields = ['title', 'body', 'created']; 
$record = $this->Post->findById($id, $fields); 

hoặc nhiều bản ghi

$recordSet = $this->Post->findAllByTitle('The title', $fields); 

* Lưu ý các ví dụ thứ hai không có nhiều ý nghĩa trừ khi có nhiều tên sách với tên 'Tiêu đề' trong cột posts.title.

Các vấn đề liên quan