2017-04-03 51 views
0

如何从数据库中获取模型,然后使用with语句将其转换为包含额外信息的数组。将模型转换为数组并返回为json

public function edit($id) { 
    // convert product to array; 
    $product = Product::findOrFail($id)->with('supplier', 'category'); 

    $data = [ 
     'suppliers' => Supplier::all()->pluck('company', 'id'), 
    ];   

    // cannot merge because $product is object and cannot turn into array 
    // the only way I know to convert to array is doing this 
    // $product->first()->toArray() but this gets the first item in the database 
    $product = array_merge($product, $data); 

    return response()->json($product, 200, ['Content-Length' => strlen(json_encode($product))]); 
} 

回答

1

你可以使用Laravel的收集帮助,使之简单:

collect($product)->toArray() 

那么你应该能够做到:

$product array_merge(collect($product)->toArray(), $data); 
0

这个怎么样:

$return = [ 
    'suppliers' => Supplier::all()->pluck('company', 'id'), 
    'product' => $product // or $product->toArray() 
]; 

return response()->json($return, 200); 

如果你需要供应商产品属性,你可以试试这个:

$productArr = $product->toArray(); 
$productArr['suppliers'] = Supplier::all()->pluck('company', 'id'); 

return response()->json($productArr, 200);