Laravel将一个模型+关联作为JSON返回

时间:2015-11-16 04:49:36

标签: json laravel associations

我正在寻找一种方法将模型作为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;
    }
}

修改

有关此案例的更多说明。使用withload似乎产生相同的结果:返回Object对象中的所有行,包括关联。我的目标是仅将一个对象与它的关联作为JSON返回,而不是全部。

1 个答案:

答案 0 :(得分:0)

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

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