У меня есть две таблицы: пользователи и профили.У пользователя может быть профиль, а в профиле должен быть пользователь!
Таблицы:
Пользователи: id имя пользователя пароль электронной почты
Профили: имя, фамилия, пол dob user_id
Так что вы можете видеть ссылки на таблицы профилей для пользователей с помощью ключа user_id
Как просмотреть профиль на основе имени пользователяэтого пользователя?
Так как ему нужно получить информацию из обеих таблиц ... пока у меня есть:
public function view ( $username )
{
$profile = $this->Profile->find('first', array(
'conditions' => array('User.username' => $username)
));
if (empty($profile))
{
$this->cakeError('error404');
}
$this->set(compact('profile'));
}
, и это маршрут для него:
Router::connect('/people/:userName',array('controller'=>'profiles','action'=>'view'),
array(
'userName'=>'[A-Za-z0-9\._-]+',
'pass'=>array('userName')
)
);
Также здесь представлены модели:
Пользователь:
class User extends AppModel
{
var $name = 'User';
}
Я не указал профиль пользователя hasOne, поскольку у него может не быть профиля.например, учетная запись администратора
Профиль:
class Profile extends AppModel
{
var $name = 'Profile';
var $belongsTo = 'User';
}
и вот мое мнение:
<h1><?php echo $profile['Profile']['firstname']; ?> <?php echo $profile['Profile']['lastname']; ?></h1>
Но нужно немного рулить, чтобы получитьэто правильно.В соответствии с книгой CakePHP 2.0 я могу сделать что-то вроде: $this->User-Profile->
, но я не до конца понимаю это или как я мог бы использовать это здесь ???
Например, будет ли это правильно:
$profile = $this->Profile->User->find('first', array(
'conditions' => array('User.username' => $username)
));
Спасибо