Heim > PHP-Framework > Laravel > Lassen Sie uns über die Grundkenntnisse der Feldkonvertierung in Laravel sprechen

Lassen Sie uns über die Grundkenntnisse der Feldkonvertierung in Laravel sprechen

PHPz
Freigeben: 2023-04-06 16:50:31
Original
1059 Leute haben es durchsucht

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',
    ];
}
Nach dem Login kopieren

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;
    }
}
Nach dem Login kopieren

在上面的示例中,我们定义了一个名为 Price 的自定义字段转换类型,用于将模型属性从以分为单位的整数格式转换为以元为单位的浮点数格式。其中,get 方法用于将属性从数据库中读取时进行转换,set 方法用于将属性写入数据库时进行转换。

要在模型中使用自定义字段转换类型,我们只需在 $casts 属性中指定类型即可:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    protected $casts = [
        'price' => Price::class,
    ];
}
Nach dem Login kopieren

在上面的示例中,我们将 price 属性转换为 Price 类型,这样当我们获取 Product 模型时,price 将会自动从数据库中读取以分为单位的整数格式,并转换为以元为单位的浮点数格式。

除了在模型中使用自定义字段转换类型外,我们还可以在查询构造器中使用字段转换类型,以满足特定的查询需求。下面让我们看看如何使用字段转换类型来进行查询:

$posts = Post::where('published_at', '>', now()->subDays(7))->get();
Nach dem Login kopieren

在上面的示例中,我们查询了最近 7 天内发布的文章。Laravel 会自动将 published_at 字段的值转换为 Carbon

Zusätzlich zu den integrierten Feldkonvertierungstypen von Laravel können wir auch Feldkonvertierungstypen anpassen, um bestimmte Geschäftsanforderungen zu erfüllen. Sehen wir uns ein Beispiel für einen benutzerdefinierten Feldkonvertierungstyp an:

rrreee

Im obigen Beispiel haben wir einen benutzerdefinierten Feldkonvertierungstyp namens Preis 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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage