国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

So aktualisieren Sie die Spaltenbesetzung von Laravel Eloquent in der Sammlung
P粉741678385
P粉741678385 2024-03-30 09:54:00
0
2
698

Ich verwende Laravel 10.

Ich nutze die Konvertierung von JSON-Spalten über:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Item extends Model
{
  protected $casts = [
    'meta' => 'collection', // here
  ];
}

Zum Beispiel, wenn Sie versuchen, einen Wert in einer Sammlung direkt zu aktualisieren:

$model->meta->put('test', 100);
$model->save();

Keine Antwort.

Wenn ich die Variable so zuweise, wie sie ist, funktioniert es einwandfrei.

$model->meta = ['test' => 100];
$model->save();

Aber was ist, wenn ich nur ein einzelnes Element aktualisieren/hinzufügen muss?

Ich habe die folgende Problemumgehung gefunden, aber ist das das erwartete Verhalten?

$meta = $model->meta;
$meta->put('test', 100);
$model->meta = $meta;
$model->save();

In diesem Fall scheint nur die direkte Zuweisung zu funktionieren, und das Casting der Sammlung scheint keine ihrer Schreibfunktionen zu unterstützen.

P粉741678385
P粉741678385

Antworte allen(2)
P粉019353247

嘗試將其轉(zhuǎn)換為集合 AsCollection

use Illuminate\Database\Eloquent\Casts\AsCollection;


protected $casts = [
  'meta' => AsCollection::class,
  ...
];
P粉668113768

解決方案(Laravel 8.28 或更高版本)

需要使用Illuminate\Database\ Eloquent\Casts\AsCollection 而不是 'collection'

$casts 數(shù)組中,您可以定義各個鍵的類型。通過指定類型的類(必要時),Laravel 自動處理轉(zhuǎn)換。這就是為什么具體使用 AsCollection::class 是必需的。

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Casts\AsCollection;

class Item extends Model
{
  protected $casts = [
    'meta' => AsCollection::class, // automatically convert value of 'meta' to Collection::class
  ];
}
更多信息



解決方案(Laravel 7.x 或更低版本)

AsCollection 在 Laravel 8.x 或更高版本中默認可用。 如果您需要舊版本中的集合功能,則需要 自己創(chuàng)建自定義演員表。

或者也可以使用 'array'演員:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Item extends Model
{
  protected $casts = [
    'meta' => 'array', // automatically convert value of 'meta' to array
  ];
}
更多信息
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage