我有一个在Laravel 4中完成的webapp,用户可以在其中创建民意调查并对其进行投票。这是迁移(简化):
民意调查的迁移:
public function up() {
Schema::create('polls', function(Blueprint $table) {
$table->increments('id');
$table->string('topic');
$table->timestamps();
});
}
用户迁移:
public function up() {
Schema::create('users', function(Blueprint $table) {
$table->increments('id');
$table->string('email');
$table->string('password');
$table->timestamps();
});
}
现在:
我想在用户投票时保留记录(因此他们不能再投票)。
我想我应该做某种M:N表。有点像这样:
| User ID | Poll ID |
|---------|-----------|
| 1 | 5 |
| 1 | 7 |
| 1 | 8 |
| 3 | 5 |
| ... | ... |
但是Laravel使用了Eloquent ORM,我读过有belongsToMany
或hasMany
这样的函数。所以,我想知道:
是否有任何约定或“聪明”的方法来设置这种“关系表”以简化开发和维护?
答案 0 :(得分:2)
belongsToMany
只是在说明如何获取数据。
如果您使用jeffrey way's laravel generator包,则可以使用以下命令创建链接表。
php artisan generate:pivot polls users
然后在你的模型中添加相应的
// poll model
public function users()
{
return $this->belongsToMany('User');
}
// user model
public function poll()
{
return $this->belongsToMany('Poll');
}