lundi 25 septembre 2017

How to update an array in Laravel 5?

I am struggling to find a suitable logic to update this array in Laravel. With this same logic I can create however with I try to update It does only updates the last row of the array. thanks

here is the code

public function update(Request $request, $id)
{

$invoice = Invoice::findOrFail($id);

$invoice->invoice_no = $request->invoice_no;
$invoice->client = $request->client;
$invoice->title = $request->title;
$invoice->client_address = $request->client_address;
$invoice->invoice_date = $request->invoice_date;
$invoice->due_date = $request->due_date;
$invoice->subtotal = $request->subtotal;
$invoice->grandtotal = $request->grandtotal;

$invoice->save();

$products = $request->all();


  $name = $products['name'];
  $price = $products['price'];
  $qty = $products['qty'];
  $total = $products['total'];

 foreach( $name as $key => $n) {

    $invoice->products()->update([ 

         //=> $invoice->id,
        'name' => $name[$key],
        'price' => $price[$key],
        'qty' => $qty[$key],
        'total' => $total[$key]
    ]);
 } 

with this exactly code I can create and works fine but if i try to update it only update the last record in the array.

database

Schema::create('invoices', function (Blueprint $table) {
    $table->increments('id');
    $table->integer('invoice_no');
    $table->date('invoice_date');
    $table->date('due_date');
    $table->string('title');
    $table->string('client');
    $table->string('client_address');
    $table->decimal('subtotal');
    $table->decimal('grandtotal');
    $table->timestamps();
});

products

Schema::create('products', function (Blueprint $table) {
    $table->increments('id');
    $table->integer('invoice_id')->unsigned();
    $table->string('name');
    $table->string('qty');
    $table->string('price');
    $table->string('total');
    $table->timestamps();
});

relationship

class Invoice extends Model {
protected $fillable =['client','client_address','title','invoice_no','invoice_date','due_date','discount', 'subtotal','grandtotal'];



public function products(){

return $this->hasMany('App\Product', 'invoice_id');
}


class Product extends Model
{

protected $casts = [
'name' => 'array',
'price' => 'array',
'qty' => 'array',
'total' => 'array'
];
protected $fillable = ['invoice_id','price','qty','total','name'];


public function invoice(){

return $this->belongsTo('App\Invoice');

}
}

array:13 [▼
"_token" => "RBtz42WyWeebnDTrSkhVhN2XC00f7MhyihI08lvA"
"invoice_no" => "1234"
"client" => "Denisson de Souza"
"title" => "owner"
"client_address" => "20/590 pine ridge road"
"invoice_date" => "2017-09-25"
"due_date" => "2017-09-30"
"name" => array:4 [▼
  0 => "11"
  1 => "22"
  2 => "33"
  3 => "44"
]
"price" => array:4 [▼
  0 => "32"
  1 => "32"
  2 => "32"
  3 => "32"
]
 "qty" => array:4 [▼
0 => "1"
1 => "2"
2 => "3"
3 => "4"
]
"total" => array:4 [▼
0 => "32"
1 => "64"
2 => "96"
3 => "128"
]
"subtotal" => "93.00"
"grandtotal" => "106.00"
]



from Newest questions tagged laravel-5 - Stack Overflow http://ift.tt/2fuv4K0
via IFTTT

Aucun commentaire:

Enregistrer un commentaire