我有2个模型Admin和Subscription
模特Admin.php
public function subscription() {
return $this->hasOne('App\Subscription','admin_id','id');
}
Model Subscription.php
public function payer() {
return $this->belongsTo('App\Admin','admin_id','id');
}
当我尝试获得订阅的付款人时,它返回null。 我正在收到这样的付款人。
在Controller.php中
$subscriptions=Subscription::all();
foreach ($subscriptions as $subscription) {
dd($subscription->payer);
}
请给我一个解决方案。我试着改变它仍然无法正常工作的一切。
这是我的迁移
订阅表
id int(10) unsigned Auto Increment
subscription_type varchar(191) NULL
expiry_date timestamp NULL
status varchar(191) [required]
admin_id varchar(191)
created_at timestamp NULL
updated_at timestamp NULL
管理员表
id int(10) unsigned Auto Increment
name varchar(191)
email varchar(191)
password varchar(191)
remember_token varchar(100) NULL
created_at timestamp NULL
updated_at timestamp NULL
答案 0 :(得分:1)
我不确定,因为您还没有显示您的迁移文件,但我认为您可能错误地设置了关系,您指定的是同一个外来文件。此外,如果主键被命名为' id'你不需要指定它。所以也许这可以解决:
模特管理员
public function subscription()
{
// asumes foreign key is called admin_id
return $this->hasOne('App\Subscription');
}
模型订阅
public function payer()
{
// asumes foreign key is called subscription_id
return $this->belongsTo('App\Admin');
}
更新,如果您的表名为,因为您建议您不需要指定任何密钥,因为您遵循了laravel默认命名约定。