Bei der Verwendung von Laravel stoßen wir häufig auf Situationen, in denen Felder konvertiert werden müssen. In diesem Artikel befassen wir uns eingehend mit den Grundlagen der Feldkonvertierung in Laravel, einschließlich der Anpassung von Feldkonvertierungstypen.
Die Feldkonvertierung in Laravel wird verwendet, um Modellattribute von einem Format in ein anderes zu konvertieren, um unterschiedliche Geschäftsanforderungen zu erfüllen, z. B. die Konvertierung des in der Datenbank gespeicherten Zeitstempelformats in ein für Menschen lesbares Zeitformat.
Laravel bietet eine Fülle von Feldkonvertierungstypen, einschließlich Datum, Uhrzeit, JSON, Array und anderen Typen. Durch die Definition im Modell können wir Modellattribute einfach konvertieren. Schauen wir uns an, wie man Feldkonvertierungstypen in Laravel definiert:
namespace App; use Illuminate\Database\Eloquent\Model; class Post extends Model { protected $casts = [ 'published_at' => 'datetime', 'meta' => 'array', ]; }
Im obigen Beispiel konvertieren wir published_at
in den Typ datetime
und meta In den Typ <code>array
konvertieren. Wenn wir auf diese Weise das Post
-Modell aus der Datenbank erhalten, wird published_at
automatisch in eine Carbon
-Instanz meta Wird automatisch in ein PHP-Array konvertiert. <code>published_at
转换为 datetime
类型,将 meta
转换为 array
类型。这样,当我们从数据库中获取 Post
模型时,published_at
将会自动转换为 Carbon
实例,meta
将会自动转换为 PHP 数组。
除了 Laravel 内置的字段转换类型,我们也可以自定义字段转换类型,以满足特定的业务需求。下面让我们看看自定义字段转换类型的示例:
namespace App\Models; use Carbon\Carbon; use Illuminate\Contracts\Database\Eloquent\CastsAttributes; class Price implements CastsAttributes { public function get($model, $key, $value, $attributes) { return $value / 100; } public function set($model, $key, $value, $attributes) { return $value * 100; } }
在上面的示例中,我们定义了一个名为 Price
的自定义字段转换类型,用于将模型属性从以分为单位的整数格式转换为以元为单位的浮点数格式。其中,get
方法用于将属性从数据库中读取时进行转换,set
方法用于将属性写入数据库时进行转换。
要在模型中使用自定义字段转换类型,我们只需在 $casts
属性中指定类型即可:
namespace App\Models; use Illuminate\Database\Eloquent\Model; class Product extends Model { protected $casts = [ 'price' => Price::class, ]; }
在上面的示例中,我们将 price
属性转换为 Price
类型,这样当我们获取 Product
模型时,price
将会自动从数据库中读取以分为单位的整数格式,并转换为以元为单位的浮点数格式。
除了在模型中使用自定义字段转换类型外,我们还可以在查询构造器中使用字段转换类型,以满足特定的查询需求。下面让我们看看如何使用字段转换类型来进行查询:
$posts = Post::where('published_at', '>', now()->subDays(7))->get();
在上面的示例中,我们查询了最近 7 天内发布的文章。Laravel 会自动将 published_at
字段的值转换为 Carbon
rrreee
Im obigen Beispiel haben wir einen benutzerdefinierten Feldkonvertierungstyp namensPreis
definiert, um die Modelleigenschaften vom Ganzzahlformat in Einheiten in Gleitkomma umzuwandeln Format in Einheiten. Unter diesen wird die Methode get
zum Konvertieren von Attributen beim Lesen aus der Datenbank und die Methode set
zum Konvertieren von Attributen beim Schreiben in die Datenbank verwendet. 🎜🎜Um einen benutzerdefinierten Feldumwandlungstyp in einem Modell zu verwenden, geben wir einfach den Typ im Attribut $casts
an: 🎜rrreee🎜Im obigen Beispiel wandeln wir Preis in den Code> um Das Attribut wird in den Typ <code>Preis
konvertiert, so dass, wenn wir das Modell Produkt
erhalten, der Preis
automatisch in Einheiten von aus der Datenbank gelesen wird Cent-Ganzzahlformat und konvertiert in das Gleitkommaformat in Yuan. 🎜🎜Zusätzlich zur Verwendung benutzerdefinierter Feldkonvertierungstypen in Modellen können wir auch Feldkonvertierungstypen in Abfrageerstellern verwenden, um spezifische Abfrageanforderungen zu erfüllen. Sehen wir uns an, wie Sie Feldkonvertierungstypen zum Abfragen verwenden: 🎜rrreee🎜Im obigen Beispiel fragen wir nach Artikeln ab, die in den letzten 7 Tagen veröffentlicht wurden. Laravel konvertiert den Wert des Felds published_at
automatisch in eine Carbon
-Instanz und vergleicht ihn mit der aktuellen Zeit. 🎜🎜Kurz gesagt ist die Feldkonvertierung eine sehr wichtige Funktion in Laravel, die uns dabei helfen kann, Modellattribute einfach zu konvertieren, um unterschiedliche Geschäftsanforderungen zu erfüllen. Durch die Einleitung dieses Artikels glaube ich, dass die Leser die Grundkenntnisse der Feldkonvertierung in Laravel verstanden haben, und ich hoffe, dass er den Lesern helfen kann, Laravel in tatsächlichen Projekten zu verwenden. 🎜Das obige ist der detaillierte Inhalt vonLassen Sie uns über die Grundkenntnisse der Feldkonvertierung in Laravel sprechen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!