php - 使用 Laravel 5.6 加载用户设置

标签 php laravel

我希望能够修改 Laravel 5.6 使用的 Auth->user() 数据。我有一个名为设置的表,其中有一列名为 user_id ,对应于用户 ID。

我尝试修改 app\User.php 并添加 __construct 函数:

   public function __construct() {

        $this->settings = Settings::where('user_id',
                Auth->user->id()
                )->first();
    }

我创建了一个文件app\Settings.php,内容如下:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class settings extends Model
{
    protected $table = "settings";

}

但是,我在 User.php 中的 Auth->user()->id 行收到用户错误,尽管我确信那是正确的如何引用它?

如何将数据从 settings 表加载到 User 类?

最佳答案

您可以使用load()方法来延迟加载关系:

auth()->user()->load('settings');

每个请求只需执行一次此操作,例如在中间件中。然后您就可以在应用程序的任何部分使用这些数据:

{{ auth()->user()->settings->theme }}

当然,要实现此目的,您需要在 User 模型中定义关系,例如:

public function settings()
{
    return $this->hasOne(Settings::class);
}

关于php - 使用 Laravel 5.6 加载用户设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48975150/

相关文章:

mysql - Laravel 5 Connection.php 中的 QueryException 第 673 行 :

php - 检查 MySQL 中单行字符串中是否存在数字

php - 获取二维数组相对于一维数组大小的维度

php - Laravel - 查询以多对多关系连接表

php - Laravel 5.7 : Custom Validation Rule. 无法使用注入(inject)到构造函数的类

node.js - gulp 命令不合并 Laravel 框架中的 JavaScript 文件。给出奇怪的错误

mysql - Laravel Eloquent - 对多个关系列求和

php - 在电子邮件正文中使用 youtube 发送 iframe

php - 使用 Eloquent 的 Laravel block 方法

php - 运行查询时为 "USE statement is not supported to switch between databases"