developer
developer

Reputation: 33

create objects containing arrays in it from database in laravel

[{
"productname" : "product 1",
"label" :["used license", "unused license"],
"value" : [16,15]
},
{
"productname" : "product 2",
"label" :["used license", "unused license"],
"value" : [16,15]
}]

I am trying to create the above format from laravel code.But there were no success so far. In the above code label is the names of two columns and value are the values of two columns.

My code so far is below

 $licenses_count = products::select('product_name AS 
 productname','total_license', 'license_remaining')
        ->get();
        return $licenses_count;

my code output

[{
 "productname" : "product 1",
 "total_licenses" :5,
 "remaining_licenses" : 11,
 },
 {
 "productname" : "product 2",
 "total_licenses" :16,
 "remaining_licenses" : 15,
}]

Any help would be appreciated.

Upvotes: 0

Views: 117

Answers (2)

developer
developer

Reputation: 33

I changed the code as below which is working as in the required format.

$result = array();
foreach($licenses_count as $row){
            foreach($row as $k=>$v){
                $product = array();
               if($v=="productname"){
                  $product['productname'] = $row->productname;
               }
               if($v=="total_license"){
                  //return $row;
                  $product['label'][] = 'used license';
                  $product['value'][] = $row->total_license;
               }
               if($v=="license_remaining"){
                  $product['label'][] = 'unused license';
                  $product['value'][] = $row->license_remaining;
               }
            }
            $result[] = $product;
        }
        return $result;

Upvotes: 1

McBern
McBern

Reputation: 549

Try this:

$licenses_count = products::select('product_name AS 
productname','total_license', 'license_remaining')
    ->get();

$result = array();
foreach($licenses_count as $row){
    $product = array();
    foreach($row as $k => $v){
       if($k=="productname"){
          $product['productname'] = $v;
       }
       if($k=="total_licenses"){
          $product['label'][] = 'used license';
          $product['value'][] = $v;
       }
       if($k=="remaining_licenses"){
          $product['label'][] = 'unused license';
          $product['value'][] = $v;
       }
    }
    $result[] = $product;
}

return $result;

Upvotes: 0

Related Questions