Laravel属于关系 - 试图获得非对象的属性

Léo*_*oco 10 php laravel eloquent laravel-5 laravel-eloquent

user.php的

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

Company.php

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

表用户

id name companies_id

表公司

id名称

我正在尝试将公司的名称附加到用户身上.

$user = User::findOrFail(Auth::user()->id);
$companyName = $user->company()->first()->name;
Run Code Online (Sandbox Code Playgroud)

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

我没有得到我所缺少的东西......提前谢谢你

Léo*_*oco 9

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

解决方案A.

public function company() {
    return $this->belongsTo('App\Company', 'companies_id')
}
Run Code Online (Sandbox Code Playgroud)

解决方案B.

public function companies() {
    return $this->belongsTo('App\Company')
}
Run Code Online (Sandbox Code Playgroud)


Tur*_*nlı 6

您的 company_id 字段也可能为空

这个原因你必须在循环中检查你的领域

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

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

     echo 'empty';
   endif;

}
Run Code Online (Sandbox Code Playgroud)