php - Laravel 有很多保存

标签 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');
    }
}

这是子模型

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

    public $timestamps = false;
}

现在我的 Controller 看起来像这样

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);
    }

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

最佳答案

这样解决

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);
    }

关于php - Laravel 有很多保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52026123/

相关文章:

Laravel 查询结果中的当前 id

php - 如何使用 less 与 php

php - 使用 PHP 从(搜索引擎)引用网址获取关键字

php - Laravel 文件上传验证不会触发 - TokenMismatchException

node.js - 当 Redis 列表只有一条记录时无法 ltrim

java - 开发 Java Swing 应用程序,该应用程序将使用数据库存储数据并将其显示在 JFrame 上

php - Laravel:具有本地范围的热切加载

php - ps x 显示奇怪的命令 : -f html/index. php

javascript - jQuery 如何将数据放入 HTML (.data)

python - 如何使用 pgdb.executemany?