2017-01-09 34 views
0

我在cakephp 3基礎上的Lynda教程之後,遇到了問題。任務是,當您查看一個用戶時,此用戶實體還必須包含有關他最後添加的書籤的信息。用戶與LastBookmarks沒有關聯

那麼就教程的傢伙所做的是:

上的書籤表我已經添加了一個關係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

我該如何克服我的問題?如果您需要任何其他信息,請讓我知道並提供。謝謝

回答

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

+0

是的,你是對的。一個人認爲,沒有LastBookmarks表...在教程中有書籤和用戶表。但後來不知何故,用戶通過$ this-> hasOne('LastBookmark')代碼創建lastbookmark信息。任何在Users表上添加這個關聯的方式都適用於我。 Thx –

+0

ehhh現在我明白了:D我添加的代碼不應該在BookmarksTable上,而是在UsersTable上:D Thx man! –