v2.5.2
Giriş yap

Vue'dan gelen arrayi Laravel Controller'da kaydetmek

cankav
477 defa görüntülendi

Merhaba, vue ile laravel'deki controller'ıma veri gönderip gelen veriyi veritabanına kaydetmeye çalışıyorum.

vue datamdaki ilgili kısım bu:

data() {
            return {
                bloklar: [
                    {blok_adi: "", daire_sayisi: ""},
                    ],
            }
           

blok bilgilerini girdiğim formumu submit ediyorum. axios ile ilgili controller'a iletiliyor. array şeklinde göndermediğim vue verilerini controllerda işleyebiliyorum ama bloklar arrayini bir türlü işleyemedim.

öncelikle gönderdiğim veri controller'a geliyor. çünkü aynı controller'da farklı veriler de kaydediyorum sorun yok.
chrome dev tools'ta network kısmında da iletildiğini gördüğüm: $request->bloklar şeklinde gelen veri:

(buraya kadar her şey harika)

[{blok_adi: "A blok", daire_sayisi: 2}, {blok_adi: "B blok", daire_sayisi: 2}]

Bu array mi yoksa json mu ne olduğunu tam kavrayamadığım veriyi laravelde ayırıp veritabanına kaydedemedim. mesela en son yazdığım kod:

 $bloklar = json_decode($request->bloklar);
        for($i = 0; $i < count($bloklar); $i++){
            $yeni_blok = new bloklar();
            $yeni_blok->blok_adi = $bloklar[$i]->blok_adi;
            $yeni_blok->site_id = $site_idsi; //bu satır veritabanı ilişkisi için
            $yeni_blok->daire_sayisi = $bloklar[$i]->daire_sayisi;
            $yeni_blok->save();
        }
Edit:

hata kodumu eklememişim.

message: "Trying to get property 'blok_adi' of non-object", exception: "ErrorException", file...

bilgisi olan var mı? teşekkürler

Cevap yaz
Cevaplar (1)
cankav
1200 gün önce

Tekrardan merhaba,
sorunum çokta karışık bir sorun değilmiş. çözdüm.

bu kısmı

 $bloklar = json_decode($request->bloklar);
        for($i = 0; $i < count($bloklar); $i++){
            $yeni_blok = new bloklar();
            $yeni_blok->blok_adi = $bloklar[$i]->blok_adi;
            $yeni_blok->site_id = $site_idsi; //bu satır veritabanı ilişkisi için
            $yeni_blok->daire_sayisi = $bloklar[$i]->daire_sayisi;
            $yeni_blok->save();
        }

şu şekilde değiştirdim:

        foreach($request->bloklar as $blok) {
            $yeni_blok = new bloklar();
            $yeni_blok->blok_adi = $blok['blok_adi'];
            $yeni_blok->site_id = $site_idsi;
            $yeni_blok->daire_sayisi = $blok['daire_sayisi'];
            $yeni_blok->save();
        }