Laravel 5.2 +如何在DB中保存记录

时间:2016-05-05 12:41:03

标签: php laravel-5 laravel-5.2

自从过去两周开始使用laravel 5.2后,我发现了一种在DB中存储记录的新方法。

For Instance

 User table 
 id      name
 1       Test 1
 2       Test 2

 Project Table
 id     user_id      name
 1      1            Project 1
 2      2            Project 2

用户项目表在外键约束中链接。

要存储在 Project 表中,我使用了以下代码行。

Auth::user()->projects()->save($project);

如果我想在任务表中存储记录,我可以使用类似的解决方案吗? 其中project_id和user_id分别是项目和用户表的外键约束。

Task Table 
id    project_id     user_id      name
1     1              1            test task

2 个答案:

答案 0 :(得分:1)

如果您已经转动,那么您可以通过以下方式实现:

附加

1

Auth::user()->projects()->attach([1 => ['name' => $name], 2, 3]);
同步时

2

Auth::user()->projects()->sync([1 => ['name' => $name], 2, 3]);
更新数据透视

3
Auth::user()->projects()->updateExistingPivot($projectId, ['name' => $name]);

读取

您可以通过一系列相关模型访问的数据透视数据 - 然后找到您感兴趣的模型并获得pivot特殊字段:

$project = Auth::user()->projects->find($projectId);
return $project->pivot->name;

你可以到达那里,但只能按照我上面给你的方式。

答案 1 :(得分:1)

是的,你可以这样做。您所要做的就是在Tasks模型中创建两个函数,每个函数对应一个关系:

class Task extends Model
{
    public function user()
    {
        return $this->belongsTo('App\User');
    }
    public function project()
    {
        return $this->belongsTo('App\Project');
    }
}

当您保存任务时,您只需使用附加它们,就像使用它一样。

$user = User::find(1);
$project = Project::find(1);
$task = Task::create();
$task->user()->attach($user);
$task->project()->attach($project);
$task->save();