首页 > 解决方案 > Laravel 8:如何在现有数据库中检索一对一关系的数据?

问题描述

我在以一对一的关系检索数据时遇到了一些问题。我有这个现有的表,我想从 rfp_details 中检索数据。这是我的代码

//rfpmain model
protected $table = 'accounting.request_for_payment';
public function rfpDetail(){
    return $this->hasOne(RfpDetail::class);
}


//rfp detail model
protected $table = 'accounting.rfp_details';
public function rfpMain(){
    return $this->belongsTo(RfpMain::class);
}

//rfp controller
public function show($id)
{
    $rfpMain = RfpMain::findOrFail($id);
    $rd = $rfpMain->rfpDetails;
    dd($rd);
}

下面是我现有数据库的结构

在此处输入图像描述

标签: laraveleloquentlaravel-8one-to-one

解决方案


您需要在您的关系中定义外键,因为如果您无法定义它,那么它将采用与您的情况不同的默认值。

你需要从

public function rfpDetail(){
    return $this->hasOne(RfpDetail::class);
}

public function rfpDetail(){
    return $this->hasOne(RfpDetail::class,'rfpid');
}

推荐阅读