将新模型保存到数据库


saving new model to database

我正在尝试掌握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获取多对多文档