Laravel 有很多保存

Ser*_*gey 5 php database laravel dingo-api

我有两个表来保存数据。其中之一有外键,因此我有一对多的关系。但是,我不明白如何将数据同时保存到两个表中。我有一个查询,其中包含一个表的数据和另一个应附加到第一个表的数据。

这是主要模型

class Site extends Model
{
    protected $fillable = ['path', 'site_link'];

    public $timestamps = false;

    public function features() {
        return $this->hasMany('App\SiteFeature');
    }
}
Run Code Online (Sandbox Code Playgroud)

这是子模型

class SiteFeature extends Model
{
    protected $fillable = ['feature', 'site_id'];

    public $timestamps = false;
}
Run Code Online (Sandbox Code Playgroud)

现在我的控制器看起来像这样

class SiteController extends BaseController
{
    public function index()
    {
        return Site::all();
    }

    public function show(Site $id)
    {
        return $this->response->item($id, new SiteTransformer);
    }

    public function store(Request $request)
    {
        $site = Site::create($request->all());

        return response()->json($site, 201);
    }
Run Code Online (Sandbox Code Playgroud)

我知道它会将其保存为一份数据。我请求你帮助我将数据分成两个表。在文档中,我找到了存储与数据库中现有模型的关系的方法,但是我在创建时没有该模型。

Ser*_*gey 6

就这样解决了

public function store(Request $request)
    {
        $site = Site::create([
            "path" => $request->path,
            "site_link" => $request->link,
        ]);

        foreach ($request->features as $feature) {
            $site->features()->save(new SiteFeature(["feature" => $feature]));
        }

        return response()->json($site, 201);
    }
Run Code Online (Sandbox Code Playgroud)