我跟随关于cakephp 3基础知识的Lynda教程,我遇到了问题。任务是当您查看一个用户时,此用户实体还必须包含有关其上次添加的书签的信息。
那么教程中的人就是:
书签表上的我添加了一个关系hasOne
class BookmarksTable extends Table
{
public function initialize(array $config)
{
parent::initialize($config);
$this->table('bookmarks');
$this->displayField('title');
$this->primaryKey('id');
$this->addBehavior('Timestamp');
$this->belongsTo('Users', [
'foreignKey' => 'user_id'
]);
$this->belongsToMany('Tags', [
'foreignKey' => 'bookmark_id',
'targetForeignKey' => 'tag_id',
'joinTable' => 'bookmarks_tags'
]);
// i have added this line
$this->hasOne('LastBookmarks', [
'className' => 'Bookmarks',
'foreignKey' => 'user_id'
]);
}
我的usersController我在包含数组
中添加了LastBookmarks public function view($id = null)
{
$user = $this->Users->get($id, [
'contain' => ['Bookmarks', 'LastBookmarks']
]);
$this->set('user', $user);
$this->set('_serialize', ['user']);
}
我得到的错误是Users is not associated with LastBookmarks
这是一个错误的打印屏幕,当我按下一个用户的视图时,我会得到这个错误
我如何克服自己的问题?如果您需要任何其他信息,请告诉我并提供。谢谢
答案 0 :(得分:2)
您正试图在Users
表上查找,因此您错过了该表上的关联。
class UsersTable extends Table
{
public function initialize(array $config)
{
$this->hasOne('LastBookmarks');
}
}
这对您来说可能不完全正确,但基本上错误告诉您Users
表不知道LastBookmark
是什么,因为它与它没有关联。
https://book.cakephp.org/3.0/en/orm/associations.html
添加UsersTable
需要与LastBookmarksTable
相关的更正关联。