2017-01-09 3 views
0

Im folgenden Lynda Tutorial auf CakePHP 3 Grundlagen und ich habe auf Problem begegnet. Die Aufgabe bestand darin, dass diese Benutzereinheit beim Anzeigen eines Benutzers auch Informationen zu seinem zuletzt hinzugefügten Lesezeichen enthalten muss.Benutzer ist nicht verbunden mit LastBookmarks

Also, was der Kerl auf Tutorial tat, war:

auf Lesezeichen Tabelle habe ich hinzugefügt eine Beziehung 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' 
     ]); 
    } 

Und mein Userscontroller i LastBookmarks in enthalten Array

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

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

hinzugefügt haben Und der Fehler, den ich bekomme, ist Users is not associated with LastBookmarks Dies ist ein Druck-Bildschirm des Fehlers, den ich bekomme, wenn ich auf einen BenutzerBlick drückenenter image description here

Wie kann ich mein Problem lösen? Wenn Sie zusätzliche Informationen benötigen, lassen Sie es mich bitte wissen. Danke

Antwort

2

Sie versuchen, Ihre Suche auf der Users Tabelle zu tun, so dass Sie die Zuordnung auf dieser Tabelle fehlt.

class UsersTable extends Table 
{ 

    public function initialize(array $config) 
    { 
     $this->hasOne('LastBookmarks'); 
    } 
} 

Dies könnte nicht genau für Sie richtig sein, aber im Grunde der Fehler Sie sagt, dass die Users Tabelle nicht weiß, was LastBookmark ist, weil es nicht mit ihm verbunden ist.

https://book.cakephp.org/3.0/en/orm/associations.html

die Korrektur Verein hinzufügen, dass UsersTable Bedürfnisse LastBookmarksTable beziehen.

+0

ja du hast Recht. Man denke, es gibt keine LastBookmarks-Tabelle ... In Tutorial gibt es Lesezeichen und Benutzer Tabelle. Aber irgendwie macht der Kerl letzte Informationen über den Benutzer über $ this-> hasOne ('LastBookmark'). Jede Art und Weise, wie diese Assoziation in der Benutzertabelle hinzugefügt wurde, funktionierte für mich. Thx –

+0

ehhh jetzt bekomme ich es: D der Code, den ich hinzugefügt habe, sollte nicht auf BookmarksTable, sondern auf UsersTable: D Thx Mann! –

Verwandte Themen