Isu Laravel ->put() - kandungan bercampur (JSON lwn. bukan JSON)
P粉955063662
P粉955063662 2023-09-09 15:30:11
0
1
482

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粉955063662
P粉955063662

membalas semua(1)
P粉002023326

Betulkannya dengan hanya mencipta tatasusunan seperti ini:

$grade_json = array("grade" => $grade);
$datatable->GroupsCollection = $datatable->GroupsCollection->put($job, $grade_json);
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan