2012-03-05 4 views
0

В настоящее время у меня есть таблица users и таблица posts. В таблице моих сообщений есть поле для user_id, однако я не уверен, как бы захватить пользователей name, которое находится в таблице users. Я думал об использовании метода afterFind(), а затем с помощью SQL для выбора данных, но должен быть лучший способ, чем это. Кроме того, на мой взгляд, я использую функцию read() для захвата одного сообщения. Могут ли модели afterFind() вступить после запуска read()? Если нет, существует ли такой эквивалент, как afterRead()?В CakePHP есть ли лучший способ выбрать имя пользователя?

ответ

2

Просто создайте ассоциацию Post принадлежит пользователю, и всякая регулярная операция поиска/чтения, имеющая достаточно высокое значение recursive, автоматически выберет пользователя с каждым сообщением.

$post = $this->Post->find(...); 
echo $post['User']['name']; 
+1

Это так сексуально! – Strawberry

+0

Я бы использовал 'echo h ($ post ['User'] ['name'])' - по соображениям безопасности! всегда избегайте выхода. – mark

+0

Интересно, я никогда не слышал о выходе выхода. Я только слышал об экранировании ввода, но, думаю, это имеет смысл. Однако, если бы у меня были жесткие ограничения на мой вход, тогда мне не нужно было бы сбегать для выхода прямо? – Strawberry

0

вы должны идти, как показано ниже:

$this->Cake->findById(7); Cake.id = 7 

здесь, вы можете использовать user_id вместо 7, как ..

Find BY CAKE PHP

0
$this->Post->bindModel(array('belongsTo'=>'User')); 
$post = $this->Post->findById($post_id); 
$userName = $post['User']['name']; 

Здесь являются ошибки, я набрал его в eclipse (: