使用Laravel 5.6加载用户设置

时间:2018-02-25 15:28:07

标签: php laravel

我希望能够修改Laravel 5.6使用的Auth-> user()数据。我有一个名为settings的表,其中包含一个名为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";

}

但是我在Auth->user()->id的{​​{1}}行收到了用户错误,但我确定这是引用它的正确方法吗?

如何将User.php表中的数据加载到User类?

1 个答案:

答案 0 :(得分:4)

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

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

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

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

当然,为了完成这项工作,您需要在User模型中定义关系,例如:

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