Laravel 雄辩:不保存到数据库的模型关系
假设我有两个模型: 用户和任务 他们的关系如下: 用户可以有许多属于自己的任务 任务可以有多个用户Laravel 雄辩:不保存到数据库的模型关系,laravel,eloquent,Laravel,Eloquent,假设我有两个模型: 用户和任务 他们的关系如下: 用户可以有许多属于自己的任务 任务可以有多个用户 $user = new User(); $task = new Task(); 通常,我会这样做: $user->tasks->附加$task 但问题是用户和任务没有持久化到数据库中。因此,如果我运行上面的最后一段代码,我将得到一个完整性约束,因为这些模型没有id 我查看了文档,发现有一个方法关联,但这需要在数据库中保存一个id的模型 是否有任何方法可以将一个模型附加到另一个模型,而不将它们持久
$user = new User();
$task = new Task();
通常,我会这样做:
$user->tasks->附加$task
但问题是用户和任务没有持久化到数据库中。因此,如果我运行上面的最后一段代码,我将得到一个完整性约束,因为这些模型没有id
我查看了文档,发现有一个方法关联,但这需要在数据库中保存一个id的模型
是否有任何方法可以将一个模型附加到另一个模型,而不将它们持久化到数据库中 拉威尔的模型只是一个普通类。因此,仅实例化它不会持续到DB。您应该通过保存模型来持久化到DB: 这可以通过运行“另存为”来完成,如下所示:
$user->save();
$task->save();
$user->tasks()->attach($task->id);
需要注意的是,它是$user->tasks->attach,而不是$user->tasks->attachLaravel中的模型只是一个普通类。因此,仅实例化它不会持续到DB。您应该通过保存模型来持久化到DB: 这可以通过运行“另存为”来完成,如下所示:
$user->save();
$task->save();
$user->tasks()->attach($task->id);
需要注意的是,它是$user->tasks->attach,而不是$user->tasks->attach,我想您可以手动调用setRelation
$model->setRelation('child', $childInstance);
否则
您只需实例化一个新模型即可创建它:
$model = new Model;
然后,您可以在稍后阶段将其保存到数据库:
$model->save();
我想你可以手动调用setRelation
$model->setRelation('child', $childInstance);
否则
您只需实例化一个新模型即可创建它:
$model = new Model;
然后,您可以在稍后阶段将其保存到数据库:
$model->save();
是的,但我不想将其保存到数据库您使用的是AR实现,您不想保存到DB?那你想在这里实现什么?从技术上说,我只需要收集。所以你可以想象,我可以简单地创建一个数组,然后轻松地将其转换为一个集合。但是我输入hint我的类只接受'that'模型的一个实例,这样我就不会得到任何运行时异常。。。我觉得它很聪明…为什么不把hint作为一个集合输入呢。您可以使用Collection类。May看起来很奇怪,但是Im triyng可以将创建模型的责任从保存到数据库中分离出来,Im使用雄辩的模型作为域实体,并且遇到了相同的情况。@Arun Ganessh的回答帮了我很多忙是的,但我不想将其保存到数据库中您正在使用AR实现,您不想保存到DB?那你想在这里实现什么?从技术上说,我只需要收集。所以你可以想象,我可以简单地创建一个数组,然后轻松地将其转换为一个集合。但是我输入hint我的类只接受'that'模型的一个实例,这样我就不会得到任何运行时异常。。。我觉得它很聪明…为什么不把hint作为一个集合输入呢。您可以使用Collection类。May看起来很奇怪,但是Im triyng可以将创建模型的责任从保存到数据库中分离出来,Im使用雄辩的模型作为域实体,并且遇到了相同的情况。@Arun Ganessh的回答帮助我在处理hasMany关系时传递整个集合。在处理hasMany关系时传递整个集合。