从表中加载用户设置

时间:2018-02-27 10:18:53

标签: php laravel laravel-5.6

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

我正在尝试将\App\User类与设置表链接。

我的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。这是为什么?

2 个答案:

答案 0 :(得分:2)

您的用户模型中的

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

在你的刀片中:

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

答案 1 :(得分:0)

尝试以下代码:

你的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:防止大规模分配。当用户通过请求传递意外的HTTP参数时,会发生批量分配漏洞,并且该参数会更改数据库中您不期望的列。

有关详细信息,请访问:https://laravel.com/docs/5.6/eloquent#eloquent-model-conventions