我正在寻找一种方法将模型作为JSON返回,包括保存后的关联模型(在控制器内)。
我知道如何通过执行以下操作以关联方式响应JSON:
$objects = MyModel::with(['assocation1', 'association2.dependencies'])->get();
return response()->json($objects, 200);
但是在已找到对象的情况下?我尝试使用与上面相同的概念,但它会返回每一行。
$object = MyModel::first();
$object->with(['assocation1', 'association2.dependencies'])->get();
Laravel的文档很遗憾地说了很多。我想要做的是在控制器中返回一个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
似乎产生相同的结果:返回Object
对象中的所有行,包括关联。我的目标是仅将一个对象与它的关联作为JSON返回,而不是全部。
答案 0 :(得分:0)
我相信你并不像你想象的那么遥远。在第二个例子中,你不应该调用get()。试试这个:
if ( $object = $object->save() )
{
$object->load(['assocation1', 'association2.dependencies']);
return response()->json($object, 201);
}