私は現在、帆プロジェクトに以下のテーブルを作成しました。私は "Users"という名前のテーブルと "Attendance"というテーブルを持っています。これらのテーブルは、MySQLデータベースに格納されています。 各ユーザーは多数の出席者の一部であり、各出席者は多数のユーザーを持つことができます。sails.jsの多対多リレーションシップにアトリビュートを保存するにはどうすればよいですか?
これは、次のコードで実現されます。
出席モデル:
attributes: {
attendees: {
collection: 'user',
via: 'attendancelist',
dominant: true
}
Userモデル:
attributes{
attendancelist: {
collection: 'attendance',
via: 'attendees'
}
}
これはという名前のテーブルを作成します。
attendence_attendees__user_attendancelist今、私は店舗は各ユーザーの「ステータス」を希望します。ステータスは、出席者が存在するかどうかを示すブール値になります。
"attendence_attendees__user_attendancelist"テーブルに各ユーザーのステータスを保存します。
これは可能ですか、それとも状態を保存するためのより良い方法がありますか?
カスタムアソシエイティブテーブルを作成することができましたが、今ではアソシエイティブテーブルにデータを追加しなくなりました。私は、次のコードを使用します。
//Attendance model
attributes: {
attendees: {
collection: 'user',
via: 'attendancelist',
through: 'userattendance'
}
//User model
attributes{
attendancelists: {
collection: 'attendance',
via: 'attendees',
through: 'userattendance'
}
}
//Userattendance model
attributes:{
attendancelist: {
model: 'attendance',
foreignKey: true,
collumnName: 'attendance_id'
},
attendees: {
model: 'user',
foreignKey: true,
collumnName: 'user_id'
},
status: {
type: 'boolean',
defaultsTo: false
}
}
//controller method to add data:
getGroupAttendees: function(req, res){
Group.findOne({id: req.param('groupID')})
.populateAll()
.exec(function getGroup(err, group){
if(err) return res.negotiate(err);
if(!groep) return res.json(401, {err:'group not found'});
var users = [];
group.attendees.forEach(function(user){
users.push(_.pick(user, ['id']));
})
var attendancelistOBJ = {
planning: 1,
attendees: users
}
Attendance.create(attendancelistOBJ, function agendaCreated(err, lijst){
if(err) return res.negotiate(err);
lijst.save(function(err, lst){
if(err) return next(err);
return res.json(attendancelistOBJ.attendees);
});
});
})
}
自動生成された連想テーブルで完璧に動作するために使用上のコントローラのメソッドが、カスタム1で、それはもはやテーブルにユーザーとリストを追加します。
私は連想表を持っています、それは自動的に水線によって生成されます。 上記の「attendence_attendees__user_attendancelist」テーブルです。この表に列を追加したいのですが、この表をSailsで変更する方法はわかりません。 –