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;
}
}
编辑
关于此案例的更多说明。使用 with
或 load
似乎会产生相同的结果:returning 来自 Object
对象的所有行,包括关联。我的目标是仅 return 一个关联为 JSON 的对象,而不是所有对象。
我相信你并没有你想象的那么遥远。在你的第二个例子中,你不应该调用 get()。试试这个:
if ( $object = $object->save() )
{
$object->load(['assocation1', 'association2.dependencies']);
return response()->json($object, 201);
}
我正在寻找一种方法 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;
}
}
编辑
关于此案例的更多说明。使用 with
或 load
似乎会产生相同的结果:returning 来自 Object
对象的所有行,包括关联。我的目标是仅 return 一个关联为 JSON 的对象,而不是所有对象。
我相信你并没有你想象的那么遥远。在你的第二个例子中,你不应该调用 get()。试试这个:
if ( $object = $object->save() )
{
$object->load(['assocation1', 'association2.dependencies']);
return response()->json($object, 201);
}