【问题标题】:Laravel getting realtionship with auth()Laravel 与 auth() 建立关系
【发布时间】:2018-02-15 17:22:55
【问题描述】:

我在User有如下关系。

public function partner()
{
    return $this->hasOne('App\Partner','partner_id');
}

我正在访问这种关系

auth()->user()->partner()->name

但它给了我一个例外,name 在partners 表中可用:

未定义属性:Illuminate\Database\Eloquent\Relations\HasOne::$name`

而来自auth()->user()->partner() 的用户对象也是空的。

我错过了什么?

【问题讨论】:

  • 使用的是什么 Laravel 版本?

标签: laravel eloquent laravel-5.4 relation


【解决方案1】:

auth()->user()->partner() 返回关系绑定,而不是模型本身。

改用auth()->user()->partner->name。

【讨论】:

  • 以下错误:SQLSTATE[42S22]: Column not found: 1054 Unknown column 'partners.user_id' in 'where clause'
  • 您能添加一张您的数据库表结构的图片/示意图吗?
【解决方案2】:

首先,确保设置正确的关系:

User.php

public function partner()
{
  return $this->hasOne('App\Partner');
}

Partner.php

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

访问用户的合作伙伴:

// Get the user's Partner instance:
$partner = auth()->user()->partner;

// Access the user's partner properties:
$partner_name = auth()->user()->partner->name;

另外,请检查您的 partners 表是否包含 user_id 列。

【讨论】:

    【解决方案3】:

    我认为你做错了,你所要做的就是改变:

    public function partner()
    {
        return $this->hasOne('App\Partner','partner_id');
    }
    

    到

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

    一个用户属于一个伙伴,因为伙伴是一个元表。

    【讨论】:

    • 完美,非常感谢
    猜你喜欢
    • 2019-01-10
    • 1970-01-01
    • 2019-03-05
    • 2015-05-13
    • 2022-01-24
    • 2021-02-06
    • 2018-09-23
    • 2019-01-03
    • 2017-11-18
    相关资源
    最近更新 更多