首页 > 解决方案 > Eloquent - 插入相关模型

问题描述

在这个问题中,保存相关模型的公认答案是:

public function store(Request $request)
{
    $player->name = $request->input('name');
    $player->lastname = $request->input('lastname');
    $player->stats = [
      'position' => $request->input('stats.position'),
      'profile' => $request->input('stats.profile'),
    ];
    $player->save();
    return response()->json($player);
}

每当我尝试这个时,我都会收到一个错误:

未找到列:1054“字段列表”中的未知列“统计”

如果我将统计数据添加到受保护的集合中,它当然永远不会出现。

在我的播放器对象上,我有这个:

public function stats(): HasMany
{
    return $this->hasMany(Stat::class);
}

那么我怎样才能让我的统计数据进入,但 elqoquent 不尝试在插入中使用“统计数据”作为列名?

标签: phplaraveleloquent

解决方案


使用该save()方法,您可以创建一个新Player对象并将其保存,然后创建一个新Stat对象并将其保存为Player相关stats()

$player = new Player
$player->name = $request->input('name');
$player->lastname = $request->input('lastname');
$player->save();

$stat = new Stat([
    'position' => $request->input('stats.position'),
    'profile' => $request->input('stats.profile'),
]);
$player->stats()->save($stat);

推荐阅读