laravel - 将新模型保存到数据库

时间:2014-08-14 20:58:48

标签: php laravel orm

我正试图掌握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,我只是不确定我应该如何使用它们。

感谢。

1 个答案:

答案 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