suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Wie füge ich nach der Anmeldung einen neuen Wert zur Funktion „auth()“ hinzu?

<p>Ich entwickle ein Projekt mit Laravel 8. </p> <p>Es gibt einige Felder in meiner Benutzertabelle, wie zum Beispiel „us_name“ und „us_surname“. Sobald der Benutzer angemeldet ist, kann ich diese Werte über "auth()->user()->us_name" abrufen. Bisher keine Probleme. </p> <p>Ich möchte hier einige Werte hinzufügen, die nicht in meiner Tabelle enthalten sind. Kombinieren Sie beispielsweise nach dem Anmelden Vor- und Nachnamen, fügen Sie ein neues Feld mit dem Namen „us_fullname“ hinzu und greifen Sie über „auth()->user()->us_fullname“ darauf zu. Wie kann ich das machen? </p>
P粉354948724P粉354948724468 Tage vor399

Antworte allen(1)Ich werde antworten

  • P粉351138462

    P粉3511384622023-09-04 12:39:52

    通过调用auth()->user(),您可以从默认的守卫中获取Authenticatable模型。

    让我们看看默认的config/auth.php

    <?php
    
    return [
        'defaults' => [
            'guard' => 'web',
            'passwords' => 'users',
        ],
        'guards' => [
            'web' => [
                'driver' => 'session',
                'provider' => 'users',
            ],
    
            'api' => [
                'driver' => 'token',
                'provider' => 'users',
                'hash' => false,
            ],
        ],
        'providers' => [
            'users' => [
                'driver' => 'eloquent',
                'model' => App\Models\User::class,
            ]
        ]
    ];

    使用这个默认的Laravel配置,您可以得到:

    1. 默认的守卫是web
    2. web守卫提供者(提供Authenticatable)是users
    3. users提供者提供了App\Models\User::class
    4. App\Models\User实现了Authenticatable合同

    然后,通过调用auth()->user() - 您将获得App\Models\User::class的实例或null

    回答您的问题

    您可以向User模型添加任何内容(例如full_name),并将其作为auth()->user()->full_name检索

    阅读关于访问器 - 使用它,您可以简单地添加计算属性:

    class User extends Authenticatable
    {
      public function getFullNameAttribute()
      {
         return "{$this->first_name} {$this->last_name}";
      }
    }

    Antwort
    0
  • StornierenAntwort