【发布时间】:2019-11-30 04:50:44
【问题描述】:
我与数据透视表有多对多关系。在这个数据透视表中,我有 2 个一对多关系。它看起来像这样画出来的:
在代码中是这样的:
WorkflowStep 模型:
public function workflowinstances(): BelongsToMany
{
return $this->belongsToMany(WorkflowInstance::class)
->using(WorkflowInstanceWorkflowStep::class)
->withPivot([
'started_at',
'finished_at',
'failed_at',
'output',
])
->withTimestamps();
}
工作流实例模型:
public function workflowSteps(): BelongsToMany
{
return $this->belongsToMany(WorkflowStep::class)
->using(WorkflowInstanceWorkflowStep::class)
->withPivot([
'started_at',
'finished_at',
'failed_at',
'output',
])
->withTimestamps();
}
WorkflowInstanceWorkflowStep Pivot 模型:
public function sourceFile(): BelongsTo
{
return $this->belongsTo(File::class, 'source_file_id', 'id');
}
public function destinationFile(): BelongsTo
{
return $this->belongsTo(File::class, 'destination_file_id', 'id');
}
文件模型:
public function workflowInstanceStepSources(): HasMany
{
return $this->hasMany(WorkflowInstanceWorkflowStep::class, 'source_file_id', 'id');
}
public function workflowInstanceStepDestinations(): HasMany
{
return $this->hasMany(WorkflowInstanceWorkflowStep::class, 'destination_file_id', 'id');
}
现在我的目标是保存文件 - 透视关系,但这似乎不起作用:
$fileObject = $workflowStep->entity->sourceClient->files()->create([
'name' => $filename,
'extension' => $file['extension'],
'category' => 'transfer',
'original_file_id' => 1,
'path' => $filePath,
'link_id' => 1,
]);
$fileObject->workflowInstanceStepSources()->save();
我创建了一个新的 File 对象,然后我想用我的关系将它链接到数据透视表
我在这里尝试的可能吗?
编辑完整的数据库方案
【问题讨论】:
-
能否在
save周围添加代码以了解上下文? -
@Shizzen83 我编辑了原帖
-
不是答案而是问题,你是如何生成如此漂亮的图表的?
-
@Shobi drawsql.app :)
标签: laravel laravel-5 eloquent