Laravel return 一个模型 + 关联 JSON

Laravel return one model + association as JSON

我正在寻找一种方法 return 模型作为 JSON 包括保存后的关联模型(在控制器内)。

我知道如何通过执行以下操作以 JSON 的身份回应关联:

$objects = MyModel::with(['assocation1', 'association2.dependencies'])->get();
return response()->json($objects, 200);

但是在已经找到对象的情况下?我尝试使用与上面相同的概念,但它 return 每一行。

$object = MyModel::first();
$object->with(['assocation1', 'association2.dependencies'])->get();
不幸的是,

Laravel 的文档对此做了很多说明。我想要做的是 return 一个 JSON 对象,包括保存后在控制器中的关联:

class ExampleController extends Controller {
    public function store()
    {
        $object = new MyModel($request->input('object'));
        $response = DB::transaction(function () use ($object) {
            if (object()->save()) {
                // Here I want to return the object with association1 as JSON
                return response()->json($object->with('association1')->get(), 201);
            }
        });
        return $response;
    }
}

编辑

关于此案例的更多说明。使用 withload 似乎会产生相同的结果:returning 来自 Object 对象的所有行,包括关联。我的目标是仅 return 一个关联为 JSON 的对象,而不是所有对象。

我相信你并没有你想象的那么遥远。在你的第二个例子中,你不应该调用 get()。试试这个:

if ( $object = $object->save() )
{
    $object->load(['assocation1', 'association2.dependencies']);
    return response()->json($object, 201);
}