我正试图掌握Laravel框架,我对ORM系统感到困惑。
我有3个数据库表:
项目(projectID,projectName等)
标签(tagID,tag)
project_tags(ID,projectID,tagID)
因此,例如,db中可能存在以下数据:
项目:
1 ---我的项目
标记:
1 --- PHP
2 --- MySQL
3 --- Javascript
project_tags
1 --- 1 --- 1
1 --- 1 --- 2
通过这样做,我设法让project_tags在Project模式下完成:
public function tags(){
return $this->hasMany('ProjectTag', 'projectID');
}
但我对如何在创建新项目时插入记录感到困惑。
这就是我创建项目的方式:
$project = new Project();
$project->projectName = $_POST['name'];
$project->projectShortName = str_replace(' ', '', strtolower($_POST['name']));
$project->projectDesc = $_POST['content'];
$project->projectImg = str_replace(' ', '', strtolower($_POST['name'])) . '.png';
$project->projectAddedDate = date('Y-m-d H:i');
$project->projectUrl = ($_POST['url'] != '') ? $_POST['url'] : null;
// TAGS SHOULD GO HERE SOMEHOW
$project->save();
我在一个数组中有tagID,我只是不确定我应该如何使用它们。
感谢。
答案 0 :(得分:0)
应使用belongsToMany
定义多对多,而不是hasMany
尝试
public function tags(){
return $this->belongsToMany('Tag', 'project_tags', 'projectID', 'tagID');
}
和
$user->tags()->attach($tags);
其中$tags
是您的ID数组。
有关多对多的文档,请参阅http://laravel.com/docs/eloquent#relationships