我正在尝试掌握Laravel框架,但我对ORM系统有点困惑。
我有三个数据库表:
projects (projectID, projectName,等等…)
tags (tagID, tag)
project_tags (ID, projectID, tagID)
例如,数据库中可能有以下数据:
项目:
1—My Project
标记:
1——PHP
MySQL
3—Javascript
project_tags
1—1—1
1—1—2
我已经设法让project_tags通过项目模式,通过这样做:
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,我只是不确定我应该如何使用它们。
谢谢。
应该使用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获取多对多文档