从 table 加载用户设置

Load user settings from table

在 Laravel 5.6 中,我有一个设置 table 和 user_id

我正在尝试使用设置 table.

link \App\User class

我有一个 Settings 模型,其中包含以下内容:

namespace App;
use Illuminate\Database\Eloquent\Model;
class settings extends Model
{
    protected $table = "settings";
}

在我的 \App\User.php 文件中,我有以下功能:

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

在该文件的顶部我有 Uses App\Settings

然而,当我 运行 在我的 master.blade.php 模板中使用以下代码时:

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

我刚刚得到 null。这是为什么?

在您的用户模型中:

public function settings() {
   return $this->belongsTo('App\Settings');  
}

在你的刀锋中:

 {{ Auth::user()->settings }}

试试下面的代码:

您的Setting.php模特:

namespace App;
use Illuminate\Database\Eloquent\Model;
class Setting extends Model
{
    protected $fillable =['your_field1_name','your_field2_name','your_field_ect_name'];
    public function users() {
        return $this->hasMany('App\User');
    }
}

您的User.php模特:

<?php

namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
    protected $fillable =['your_field1_name','your_field2_name','your_field_ect_name'];
    public function settings() {
        $this->belongsTo('App\Setting');  
    }
}

注意:您的型号名称必须是单数

$fillable:防止mass-assignment。 mass-assignment 漏洞发生在用户通过请求传递意外的 HTTP 参数时,并且该参数更改了您未预料到的数据库中的列。

欲了解更多信息,请访问:https://laravel.com/docs/5.6/eloquent#eloquent-model-conventions