Heim  >  Artikel  >  PHP-Framework  >  So schließen Sie unerwünschte Felder in der Laravel-Modellabfrage aus

So schließen Sie unerwünschte Felder in der Laravel-Modellabfrage aus

PHPz
PHPzOriginal
2023-04-23 09:18:041591Durchsuche

Laravel ist ein sehr beliebtes PHP-Webentwicklungsframework, das leistungsstarke und flexible Datenbankbetriebsfunktionen bietet. Wenn wir Laravel zum Abfragen von Daten verwenden, müssen wir häufig bestimmte angegebene Felder filtern und zurückgeben. In einigen Fällen müssen wir jedoch bestimmte Felder von der Anzeige in den Abfrageergebnissen ausschließen. In diesem Artikel wird erläutert, wie Sie unerwünschte Felder in Laravel-Modellabfragen ausschließen.

Zuerst können wir die von Laravel bereitgestellte Methode select() verwenden, um die Abfragefelder anzugeben, zum Beispiel: select() 方法来指定查询的字段,例如:

$users = User::select('name', 'email')->get();

这样会返回一个包含每个用户的 nameemail 字段的集合。但是如果我们需要排除一些字段,该怎么做呢?下面是两种方式:

方法一:排除字段

我们可以使用 select() 方法来指定要返回的所有字段,然后使用 except() 方法来将不需要的字段排除掉。例如:

$users = User::select('id', 'name', 'email', 'password')
             ->get()
             ->map(function ($user) {
                 return collect($user->toArray())
                     ->except(['password'])
                     ->all();
             });

这里我们首先使用 select() 方法指定要返回的所有字段,然后使用 get() 方法来执行查询。接着我们使用 map() 方法来对查询结果进行处理,将每个用户的信息转换为一个关联数组,并使用 except() 方法将其密码字段排除掉。

方法二:隐藏字段

Laravel 还提供了一个更为简单的方法,就是使用模型的 $hidden 属性来隐藏不需要输出的字段。例如:

class User extends Model
{
    protected $hidden = ['password'];
}

在这个例子中,我们将用户模型的 $hidden 属性设置为 ['password'],这样在查询时,Laravel 将自动将密码字段排除在结果之外。

需要注意的是,如果我们需要输出某个被隐藏的字段,可以在查询时使用 makeVisible() 方法来覆盖模型的 $hidden 属性。例如:

$user = User::find(1);
$user->makeVisible(['password']);

这将会使获取的 $userrrreee

Dies gibt einen Namen und eine Sammlung von zurück email-Felder. Was aber, wenn wir einige Felder ausschließen müssen? Hier gibt es zwei Möglichkeiten:

Methode 1: Felder ausschließen

Wir können die Methode select() verwenden, um alle zurückzugebenden Felder anzugeben, und dann exclusive( ) -Methode zum Ausschließen unnötiger Felder. Zum Beispiel: 🎜rrreee🎜Hier verwenden wir zunächst die Methode select(), um alle zurückzugebenden Felder anzugeben, und verwenden dann die Methode get(), um die Abfrage auszuführen . Dann verwenden wir die Methode map(), um die Abfrageergebnisse zu verarbeiten, konvertieren die Informationen jedes Benutzers in ein assoziatives Array und verwenden die Methode exclusive(), um den Ausschluss seines Passwortfelds zu konvertieren . 🎜

Methode 2: Ausgeblendete Felder

🎜Laravel bietet auch eine einfachere Methode, die darin besteht, das Attribut $hidden des Modells zu verwenden, um Felder auszublenden, die nicht ausgegeben werden müssen. Zum Beispiel: 🎜rrreee🎜In diesem Beispiel setzen wir das Attribut $hidden des Benutzermodells auf ['password'], sodass Laravel bei der Abfrage automatisch hinzufügt Die Passwortfelder werden von den Ergebnissen ausgeschlossen. 🎜🎜Es ist zu beachten, dass wir, wenn wir ein verstecktes Feld ausgeben müssen, die Methode makeVisible() verwenden können, um das Attribut $hidden des Modells bei der Abfrage zu überschreiben. Zum Beispiel: 🎜rrreee🎜Dies führt dazu, dass das abgerufene $user-Objekt ein Passwortfeld enthält. 🎜🎜Kurz gesagt, beide oben genannten Methoden können uns helfen, unerwünschte Felder in Laravel-Modellabfragen auszuschließen. Bei der Verwendung können wir entsprechend der tatsächlichen Situation auswählen, welche Methode verwendet werden soll. 🎜

Das obige ist der detaillierte Inhalt vonSo schließen Sie unerwünschte Felder in der Laravel-Modellabfrage aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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