Rumah  >  Soal Jawab  >  teks badan

Isu Laravel ->put() - kandungan bercampur (JSON lwn. bukan JSON)

Saya menghadapi masalah menggunakan fungsi Laravels put() kerana saya mahu meletakkan kandungan JSON ke dalam senario tunggal ini.

$datatable->GroupsCollection = $datatable->GroupsCollection->put($job, '{"grade":'.$grade.'}' );

Tetapi apabila cuba mencipta JSON "palsu", nilai yang dimasukkan ialah: {"等级":'VALUE_OF_$GRADE'} Saya telah mencuba menggunakan str_replace()stripslashes() untuk mengalih keluar garis serong ke belakang, tetapi tiada bueno.

Saya google dan ada sesuatu untuk dibaca tentang pelakon dalam model itu. Jadi saya menaip ini:

protected $casts = [
    'dvalue' => 'array',
];

Ini akan memecahkan kefungsian kod sedia ada.

public function getGroupsCollectionAttribute()
{
    return collect($this->dvalue ? $this->dvalue['groups'] : null);
}


public function setGroupsCollectionAttribute($value)
{
    $currentValue = $this->dvalue ?? new Collection();
    $this->dvalue['groups'] = $currentValue->$value;
}

Saya telah "membetulkan", tetapi saya tidak pasti bagaimana saya sepatutnya menggunakan pelakon baharu ini untuk memformat fungsi "set" dan menetapkannya kepada tatasusunan.

Perlu diingat bahawa kami mencampurkan perkara dalam baris pangkalan data, jadi ia bukan selalu JSON. Adakah terdapat cara yang lebih mudah untuk menyelesaikan masalah ini?

P粉955063662P粉955063662379 hari yang lalu425

membalas semua(1)saya akan balas

  • P粉002023326

    P粉0020233262023-09-10 11:29:38

    Betulkannya dengan hanya mencipta tatasusunan seperti ini:

    $grade_json = array("grade" => $grade);
    $datatable->GroupsCollection = $datatable->GroupsCollection->put($job, $grade_json);

    balas
    0
  • Batalbalas