【发布时间】:2014-10-25 06:27:29
【问题描述】:
我有一个 Laravel 应用程序,我正在将旧数据库迁移到新数据库。我对表格进行了一些更改,添加了一些新表格并删除了一些表格。我为此制作了一个迁移脚本。
我有一个用户。该用户被分配到一所学校和一个组。在我的旧数据库中,用户被分配到一所学校和一组。所以,我的用户表中有一个名为“group_id”的列和一个名为“school_id”的列。
现在,我做了一个映射表(我猜它是正确的英文单词),因为应该将用户分配到多个学校和多个组。
用户表:
ID |用户名 |密码 |更多...
学校表:
ID |姓名 |地址 |更多...
组表:
ID |姓名 |别名 |更多...
group_user table:
ID | group_id | user_id | school_user_id
user_school table:
ID | user_id | school_id
如您所见,我还将 school_user 关系的 ID 添加到映射表中,因为这样可以更轻松地在我的应用程序中使用。如果我从学校删除用户,我可以使用外键删除 group_user 关系。原因很简单:用户必须分配到一个学校,否则他不能在一个组中。
我用于保存用户的 Laravel 控制器是:
$user = new User;
$user->id = $gebruiker->id;
$user->username = $gebruiker->gebruikersnaam;
$user->password_md5 = $gebruiker->wachtwoord;
$user->firstname = $gebruiker->voornaam;
$user->prefix = $gebruiker->tussenvoegsel;
$user->lastname = $gebruiker->achternaam;
$user->phonenumber = $gebruiker->telefoonnummer;
$user->emailaddress = $gebruiker->email;
$user->gender = ($gebruiker->geslacht == 'man' ? 'male' : 'female');
$user->birthdate = $gebruiker->geboortedatum;
$user->save();
$user->groups()->sync(array('group_id' => $gebruiker->groep_id));
$user->schools()->sync(array($gebruiker->school_id));
我的用户模型有两种方法:
public function schools()
{
return $this->belongsToMany('School');
}
public function groups()
{
return $this->belongsToMany('Group');
}
我可以为学校保存关系。这很容易,因为映射表 school_user 有两列。 Laravel 为我解决了这个问题。但是,在 group_user 表中,我有三列
我试图让我的控制器像这样保存关系:
$user->groups()->sync(array('group_id' => $gebruiker->groep_id, 'school_id' => $gebruiker->school_id));
但是,不幸的是,它不起作用。谁能告诉我该怎么做?
编辑:对不起!我没有问正确的问题。我对这篇文章进行了编辑,我将其设为斜体。
【问题讨论】:
标签: php mysql laravel eloquent