Php Laravel雄辩关系错误-调用未定义的关系

Php Laravel雄辩关系错误-调用未定义的关系,php,mysql,laravel,eloquent,Php,Mysql,Laravel,Eloquent,我有两个表学校和订阅。我已经从我的订阅表中获得了学校id。我的问题是当我想从schools表中获取description列时。我在[App\Subscription]模型上调用未定义的关系[description]时出错。有人能告诉我我的代码有什么问题吗?我已经在模型和迁移中定义了关系。我不想使用querybuilder,因为它太令人困惑了。谢谢 学校模式 class School extends Model { protected $fillable = ['description

我有两个表
学校
订阅
。我已经从我的
订阅
表中获得了
学校id
。我的问题是当我想从
schools
表中获取
description
列时。我在[App\Subscription]模型上调用未定义的关系[description]时出错。有人能告诉我我的代码有什么问题吗?我已经在模型和迁移中定义了关系。我不想使用querybuilder,因为它太令人困惑了。谢谢

学校模式


class School extends Model
{

    protected $fillable = ['description'];

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


    public function subscriber()
    {
        return $this->belongsTo('App\Subscription','description');
    }
}
订阅模式

class Subscription extends Model
{

    protected $fillable = [
        'id', 'school_id', 'start_date', 'end_date',
    ];

    public function subscriptions(){
        return $this->hasMany('App\School','description');
    }

    public function plans(){
        return $this->belongsTo('App\Plan');
    }
}
我的控制器

 $subs = Subscription::findOrFail($id)->with('description')
                                  ->get();    
            $plans = Plan::get();
            dd($subs);
注:当我只放入
$subs=Subscription::findOrFail($id)我在
dd

 #attributes: array:8 [▼
    "id" => 2
    "school_id" => 2
    "start_date" => "2019-09-27"
    "end_date" => "2019-10-27"
    "created_at" => "2019-10-17 03:36:13"
    "updated_at" => "2019-10-17 03:36:13"
    "plan_id" => 2
    "status" => 1
  ]
学校表

| Field        | Type             | Null | Key | Default | Extra          |
+--------------+------------------+------+-----+---------+----------------+
| id           | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name         | varchar(191)     | NO   | UNI | NULL    |                |
| description  | text             | NO   |     | NULL    |                |
| logo         | varchar(191)     | YES  |     | NULL    |                |
| main_server  | varchar(191)     | YES  |     | NULL    |                |
| local_server | varchar(191)     | YES  |     | NULL    |                |
| status       | int(11)          | NO   |     | 1       |                |
| updated_by   | varchar(191)     | YES  |     | NULL    |                |
| created_at   | timestamp        | YES  |     | NULL    |                |
| updated_at   | timestamp        | YES  |     | NULL    |                |
+--------------+------------------+------+-----+---------+----------------+

订阅

+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| id         | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| school_id  | int(10) unsigned | NO   | MUL | NULL    |                |
| start_date | date             | YES  |     | NULL    |                |
| end_date   | date             | YES  |     | NULL    |                |
| created_at | timestamp        | YES  |     | NULL    |                |
| updated_at | timestamp        | YES  |     | NULL    |                |
| plan_id    | int(10) unsigned | NO   | MUL | NULL    |                |
| status     | int(11)          | NO   |     | NULL    |                |
+------------+------------------+------+-----+---------+----------------+
public function subscriptions(){
        return $this->hasMany('App\School', 'id', 'school_id');
    }

编辑:我只想从
school\u id
中获取
描述
,这是我从
$subs

中获取的,您称之为错误的关系。您在
订阅模型中定义了
订阅
而不是
说明
关系

也许是打字错误

您可以将您的关系更改为:

public function description(){
    return $this->hasMany('App\School','id', 'school_id');
}
然后就这样称呼它:

$subs = Subscription::with('description')->findOrFail($id);    

你打错电话了。您在
订阅模型中定义了
订阅
而不是
说明
关系

也许是打字错误

您可以将您的关系更改为:

public function description(){
    return $this->hasMany('App\School','id', 'school_id');
}
然后就这样称呼它:

$subs = Subscription::with('description')->findOrFail($id);    

在订阅模型中,更改关系函数订阅

+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| id         | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| school_id  | int(10) unsigned | NO   | MUL | NULL    |                |
| start_date | date             | YES  |     | NULL    |                |
| end_date   | date             | YES  |     | NULL    |                |
| created_at | timestamp        | YES  |     | NULL    |                |
| updated_at | timestamp        | YES  |     | NULL    |                |
| plan_id    | int(10) unsigned | NO   | MUL | NULL    |                |
| status     | int(11)          | NO   |     | NULL    |                |
+------------+------------------+------+-----+---------+----------------+
public function subscriptions(){
        return $this->hasMany('App\School', 'id', 'school_id');
    }
将雄辩的问题称为

$subs = Subscription::with('subscriptions')->findOrFail($id);
dd($subs->subscriptions[0]->description);

在订阅模型中,更改关系函数订阅

+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| id         | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| school_id  | int(10) unsigned | NO   | MUL | NULL    |                |
| start_date | date             | YES  |     | NULL    |                |
| end_date   | date             | YES  |     | NULL    |                |
| created_at | timestamp        | YES  |     | NULL    |                |
| updated_at | timestamp        | YES  |     | NULL    |                |
| plan_id    | int(10) unsigned | NO   | MUL | NULL    |                |
| status     | int(11)          | NO   |     | NULL    |                |
+------------+------------------+------+-----+---------+----------------+
public function subscriptions(){
        return $this->hasMany('App\School', 'id', 'school_id');
    }
将雄辩的问题称为

$subs = Subscription::with('subscriptions')->findOrFail($id);
dd($subs->subscriptions[0]->description);


检查
下的参数。。这两个表是否在
description
列上联接?@Vince description函数在订阅模型中找不到在您的订阅模型中我们看不到名为
description
的函数。我的表
subscriptions
没有列
description
sir。这就是为什么我没有把描述写进去。我错了吗@GayanS,MuthukumaranaNo先生。他们只在
订阅.school\u id
school.id
@TahaPaksuCheck
下面的参数中加入。。这两个表是否在
description
列上联接?@Vince description函数在订阅模型中找不到在您的订阅模型中我们看不到名为
description
的函数。我的表
subscriptions
没有列
description
sir。这就是为什么我没有把描述写进去。我错了吗@GayanS,MuthukumaranaNo先生。他们只有订阅才能加入。school\u id
school.id
@tahapaksuw先生,你是什么意思?我将我的代码更改为您的代码,并且我在[App\Subscription]模型上得到了对未定义关系[subscriptions]的调用。
错误我添加了我的表结构,请帮助您更改您的relationship@Vince,建立关系时,必须指出两个表是如何连接的。在这种情况下,shool_id from Subscription==id from Schoold所以:
public function subscriptions(){return$this->hasMany('App\School','id','School_id');}
您应该根据我的意见更改所有模型中的关系,先生,您是什么意思?我将我的代码更改为您的代码,并且我在[App\Subscription]模型上得到了对未定义关系[subscriptions]的调用。
错误我添加了我的表结构,请帮助您更改您的relationship@Vince,建立关系时,必须指出两个表是如何连接的。在本例中,shool_id from Subscription==id from Schoold so:
public function subscriptions(){return$this->hasMany('App\School','id','School_id');}
您应该根据我的意见更改您在所有模型中的关系我只想通过
学校id
获取学校先生的描述我从
dd
@Vince获取描述呼叫$subs->订阅->描述我得到了这个
属性[订阅]此集合实例上不存在。
错误sir@Vince订阅模型中有订阅功能,对吗?同时检查已编辑的查询,先生。我把我的代码改成了你的,但是当我添加($subs->description);`它返回
null
我只想通过
school\u id
我从
dd
@Vince获得的学校描述调用$subs->subscriptions->description我得到了这个
属性[subscriptions]此集合实例上不存在。
错误sir@Vince订阅模型中有订阅功能,对吗?同时检查已编辑的查询,先生。我把我的代码改成了你的,但是当我添加($subs->description);`它返回
null