Laravel 5.4:关系方法必须返回一个类型为Illuminate \ Database \ Eloquent \ Relations \ Relation

时间:2017-08-24 04:43:11

标签: php laravel laravel-5

我正在使用 Laravel 5.4 。有两个表groupscontacts具有以下结构。每个联系人都有一个小组。

联系人

enter image description here

enter image description here

我还为每个人创建了一个模型,如下所示:

  

Group.php是群组模型

namespace App;

use Illuminate\Database\Eloquent\Model;

class Group extends Model
{
    public function contact()
    {
        return $this->hasMany('App\Contact');
    }
}
  

Contact.php是联系人模型   

namespace App;

use Illuminate\Database\Eloquent\Model;

class Contact extends Model
{
    public function group(){
        $this->belongsTo('App\Group');
    }
}

现在使用php atrisan tinker,以下命令报告错误:

App\Contact::find(3)->group 

当我输入App\Contact::find(3)时,它会成功返回ID为3的联系人,但是App\Contact::find(3)->group会返回错误,而我希望它返回ID为3的联系人

感谢。

更新

这是错误

enter image description here

3 个答案:

答案 0 :(得分:1)

确保返回关系;

class Contact extends Model
{
    public function group(){
      return  $this->belongsTo('App\Group');
    }

}

答案 1 :(得分:1)

使用

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

而不是

public function group(){
    $this->belongsTo('App\Group');
}

需要返回

我不确定组是否是保留字。如果是,请检查并更改。

答案 2 :(得分:-1)

我认为群组是预先定义的关键字,可能就是原因。