【发布时间】:2019-03-20 06:46:00
【问题描述】:
当我从前端提交表单数据时,我正在尝试创建一条新记录,但我正在努力思考如何做到这一点。我已经找了一些例子,但还没有找到一些东西。因此,我正在为新的约定提交数据,并且我的约定与任务共享数据透视表关系。这是关系结构。
- 用户有许多任务
- 任务属于用户
- 客户有很多参与度
- 参与度属于客户
- Task belongsToMany Engagements(当然反之亦然)
如果我将数据提交到存储一个新的参与,并且我还想同时存储一个新任务我很难理解我应该使用什么方法来完成这个。
我明白在填充数据透视表之前我需要存在参与和任务。
EngagementsController.php(用于存储新的参与)
public function store(Request $request)
{
$data = $request->validate([
'client_id' => 'required|integer',
'return_type' => 'required|string',
'year' => 'required|string',
'status' => 'required|string',
'assigned_to' => 'required|string',
'done' => 'required|boolean'
]);
$engagement = Engagement::create([
'client_id' => $request->client_id,
'return_type' => $request->return_type,
'year' => $request->year,
'assigned_to' => $request->assigned_to,
'status' => $request->status,
'done' => $request->done,
]);
return response($engagement, 201);
}
在运行$engagement = Engagement 之后,我想知道是否可以像这样将assigned_to 字段的数据同时用于Engagement 和Task?
$engagement = Engagement::create([
'client_id' => $request->client_id,
'return_type' => $request->return_type,
'year' => $request->year,
'assigned_to' => $request->assigned_to,
'status' => $request->status,
'done' => $request->done,
]);
$data = $request->assigned_to;
$task->tasks()->create($data);
参与模式
class Engagement extends Model
{
protected $fillable =
[
'client_id',
'return_type',
'year',
'assigned_to',
'status',
];
public function client()
{
return $this->belongsTo('App\Client');
}
public function tasks()
{
return $this->belongsToMany('App\Task', 'engagement_task', 'engagement_id', 'task_id');
}
public function questions()
{
return $this->hasMany('App\Question');
}
}
任务模型
class Task extends Model
{
protected $fillable = ['user_id'];
public function user()
{
return $this->belongsTo('App\User');
}
public function engagements()
{
return $this->belongsToMany('App\Engagement', 'engagement_task', 'task_id', 'engagement_id');
}
}
【问题讨论】: