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

时间:2017-04-06 20:14:37

标签: php laravel laravel-5 eloquent laravel-eloquent

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');
    }
}

表用户

id name companies_id

表公司

id name

我试图获取附加给用户的公司名称。

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

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

我没有得到我失踪的东西......提前谢谢你

3 个答案:

答案 0 :(得分:9)

默认情况下,Eloquent采用关系的名称+' _id'猜猜外键。

解决方案A

A() : str_( ([]()->const char*{ const char* p=Func(); return (p ? p : "NULL"); })() ) {}

解决方案B

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

答案 1 :(得分:2)

它也可能是null你的company_id字段

这个原因你必须在循环中检查你的字段

f.e

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

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

     echo 'empty';
   endif;

}

答案 2 :(得分:1)

不使用“第一”方法尝试。

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