2017-01-09 13 views
0

私は問題に直面しているcakephp 3の基礎に関するLyndaのチュートリアルです。タスクは、1人のユーザーを表示するときに、このユーザーエンティティに最後に追加されたブックマークに関する情報も含める必要があるということでした。ユーザーはLastBookmarksに関連付けられていません

だから何のチュートリアルの男がやったことはした

ブックマークテーブルの上に私は1つの関係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' 
     ]); 
    } 

そして、私がUserControllerを追加している私は、配列を含んで

public function view($id = null) 
    { 
     $user = $this->Users->get($id, [ 
      'contain' => ['Bookmarks', 'LastBookmarks'] 
     ]); 

     $this->set('user', $user); 
     $this->set('_serialize', ['user']); 
    } 

でLastBookmarksを追加しましたそして、私が得るエラーはUsers is not associated with LastBookmarksです これは私が1人のユーザのビューを押すときに得ているエラーの印刷画面です 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

UsersTableLastBookmarksTableに関連する必要が補正の関連付けを追加します。

+0

はい、あなたは正しいです。 1つは、LastBookmarksのテーブルがないと思います...チュートリアルでは、ブックマークとユーザーのテーブルがあります。しかし、なんとか男は、ユーザーのトラフ$ this-> hasOne(LastBookmark)コードに関するlastbookmarkの情報を作ります。どのようにしてこのテーブルをUsersテーブルに追加するかは、私の仕事でした。 Thx –

+0

ehhh今私はそれを得る:Dは私が追加したコードは、BookmarkTable上にあるべきではなくUsersTableにあるべきだ:D ​​Thx man! –

関連する問題