Laravel belongsTo 关系 - 尝试获取 属性 的非对象

Laravel belongsTo relationship - Trying to get property of non-object

User.php

class User extends Authenticatable
{
    public function company() {
        return $this->belongsTo('App\Company');
    }
}

Company.php

class Company extends Model
{
    public function users() {
        return $this->hasMany('App\User');
    }
}

Table 用户

身份证名companies_id

Table 家公司

身份证名

我正在尝试获取附加到用户的公司名称。

$user = User::findOrFail(Auth::user()->id);
$companyName = $user->company()->first()->name;

我收到这条错误消息 Trying to get property of non-object

我不明白我错过了什么...提前谢谢你

默认情况下,Eloquent 使用关系名称 + '_id' 来猜测外键。

解决方案 A

public function company() {
    return $this->belongsTo('App\Company', 'companies_id')
}

解决方案 B

public function companies() {
    return $this->belongsTo('App\Company')
}

不用 "first" 方法试试。

$companyName = $user->company()->name;

您的 company_id 字段也可能为空

因此您必须在循环中检查您的字段

f.e

foreach($users as $user) 
{
   if(isset($user->company->title)): 

     echo  $user->company->title;
   else:

     echo 'empty';
   endif;

}