用户未与LastBookmarks关联

时间:2017-01-09 18:27:37

标签: cakephp cakephp-3.0

我跟随关于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 这是一个错误的打印屏幕,当我按下一个用户的视图时,我会得到这个错误 enter image description here

我如何克服自己的问题?如果您需要任何其他信息,请告诉我并提供。谢谢

1 个答案:

答案 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相关的更正关联。