0

Ich benutze CakeDC-Users Plugin.

<?php 
class Post extends AppModel { 
    public $useTable='posts'; 
    public $belongsTo = array('User'); 
    public $hasMany=array('Comment'); 
} 

Ich hatte Paginieren zu verwenden:

$allposts=$this->paginate('Post');

ich die user_id auf diese Weise erhalten kann:

foreach ($allposts as $post) { 
    debug($post['Post']['user_id']); 

Aber ich brauche die Benutzername nicht die user_id. Wie kann ich den Benutzernamen erhalten?

+0

Sie einige der Code fehlen - vor allem die, wo Sie die Daten aus dem Modell abrufen! – mark

+0

Ich kann nicht verstehen, was Sie sagen. Kannst du es ausarbeiten? – shibly

Antwort

1

Die enthaltbare Merkmal CakPHP alle zugehörigen Modelle standardmäßig versteckt: http://book.cakephp.org/2.0/en/core-libraries/behaviors/containable.html

Wenn Sie nur ein Feld eines zugehörigen Modell hinzufügen möchten Sie diese Syntax verwenden:

$allposts = $this->Post->find('all', array('contain' => 'User.username')); 

oder mit Paginieren Verwendung dieses in Ihrer Controller-Klasse: (http://book.cakephp.org/1.3/en/view/1232/Controller-Setup)

var $paginate = array('contain' => 'User.username'); 

Versuchen Sie Folgendes, darauf zuzugreifen:

$post['User']['username']; 
+0

Nein, ich kann ['username'] nicht bekommen, es ist ['user_id'], ich habe 'public $ actsAs = array (' Containable '); 'im Post-Modell. – shibly

+0

Wäre gut, diese Info zu der Frage hinzuzufügen. – flo

+0

Eigentlich meinte ich den Teil über 'Containable', weil dies die Art ändert, wie Find funktioniert. – flo

0

Versuchen Sie, die rekursive Eigenschaft auf 2 Einstellung:

$this->Post->recursive = 2; 
$allposts = $this->paginate('Post'); 
debug($allposts); 

$allposts sollte jeden Beitrag enthalten und es gehören, Benutzer.

Siehe auch: Cakephp pagination on recursive conditions