0

私はbookshelfjsを初めて使用し、他のテーブルのIDを使用して他のテーブルからデータを取得したいと考えています。このサンプルデータを使用しています:

/* User's Table */
----------------+-------------------+----------
   lastname     |    firstname      |   id  
----------------+-------------------+---------
Dela Cruz          Juan                1
Pendoku            Pedro               2

/* Logs's Table */
----------------+--------------+----------
     userid     |    time      |   id  
----------------+--------------+---------
  1                 8:00           1
  2                12:00           2
  1                 9:00           3

質問: bookshelf.js を介して特定のユーザーのログを照会するにはどうすればよいですか?

結果は次のようになります。

----------------+--------------+----------
     lastname   |    time      |   id  
----------------+--------------+---------
 Dela Cruz          8:00           1
 Dela Cruz          9:00           3

私のクエリ:

new User({'lastname': 'Dela Cruz'})
  .logs()
  .fetch()
  .then(function(timelog) {
    console.log(timelog.toJSON());
}); 

私のモデル

var User, Log;

User = bookshelf.Model.extend({
  tableName:'user',
  logs: function() {
     return this.hasMany(Log, 'userid');
  }
});

Log = bookshelf.Model.extend({
  tableName:'log',
  user: function(){
    return this.belongsTo(User, 'userid');
  }
});

ログ エラー:

{ __cid: '__cid1',
  method: 'select',
  options: undefined,
  bindings: [undefined],
  sql: 'select log.* from log where log.userid = ?'
}
4

2 に答える 2

2

ユーザー モデルを次のように変更します。

User = bookshelf.Model.extend({
  tableName:'user',
  logs: function() {
     return this.hasMany(Log);
  }
});

そして、これを試してください

new User({'lastname': 'Dela Cruz'})
  .fetch({withRelated:['logs']})
  .then(function(timelog) {
    console.log(timelog.toJSON());
}); 
于 2015-04-24T15:39:16.190 に答える