2016-04-25 12 views
0

私は現在、帆プロジェクトに以下のテーブルを作成しました。私は "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で、それはもはやテーブルにユーザーとリストを追加します。

答えて

0

多分多くの関係がある場合は、2つのテーブルを結合する結合テーブルが必要で、そのテーブルの主キーは両方の主キーの複合キーですテーブルUserAttendance。たぶんあなたは、その結合テーブルにあなたのステータスを保存することができます。

それは意味がありますか、そして/または助けてくださいか?

+0

私は連想表を持っています、それは自動的に水線によって生成されます。 上記の「attendence_attendees__user_attendancelist」テーブルです。この表に列を追加したいのですが、この表をSailsで変更する方法はわかりません。 –

関連する問題