Eloquent:模型关系而不保存到DB

时间:2016-10-13 10:27:58

标签: laravel eloquent

说我有两个型号: 用户和任务

他们的关系如下: 用户可以有很多任务(belongsToMany) 任务可以有许多用户(belongsToMany)

$user = new User();
$task = new Task();

通常情况下,我会这样做:     $user->tasks->attach($task)

但问题是数据库中没有持久保存用户和任务。因此,如果我运行上面的最后一个代码,我将获得完整性约束,因为这些模型没有id。

我查看了文档,我发现有一个方法associate(),但这需要一个具有id的模型(保存在数据库中)。

有没有什么方法可以将模型附加到另一个模型而不将它们保留在数据库中?

2 个答案:

答案 0 :(得分:1)

Laravel的模特只不过是一个普通的课程。因此实例化它只会不会持久存在于DB中。您应该通过保存模型来持久保存到DB:

这可以通过运行save()完成,如下所示:

$user->save();
$task->save();

$user->tasks()->attach($task->id);

重要的是要注意它的$user->tasks()->attach()而非$user->tasks->attach()

答案 1 :(得分:0)

我猜你可以手动调用setRelation。

$model->setRelation('child', $childInstance);

ELSE

只需通过实例化创建一个新模型:

$model = new Model;

然后,您可以在以后将其保存到数据库中:

$model->save();