【问题标题】:Laravel 8: how to retrieve data of a one to one relationship in existing database?Laravel 8:如何在现有数据库中检索一对一关系的数据?
【发布时间】:2021-11-24 18:01:04
【问题描述】:

我在以一对一关系检索数据时遇到了一些问题。 我有这个现有的表,我想从 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);
}

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

【问题讨论】:

  • 我试图为我现有的数据库制作一个模型。我的问题是当我在这两者之间建立关系时。我无法检索 rfp_details。我不知道我做错了什么。还是不允许对现有数据库进行雄辩?
  • 其实问题出在typo访问关系的时候。 rfpDetail 是您的关系名称,但您使用了 rfpDetails,其中不需要 s
  • 是的,感谢您的关注。我有新问题它返回一个空白{}。我不知道是不是因为我的模特

标签: laravel eloquent laravel-8 one-to-one


【解决方案1】:

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

你需要替换

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

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

【讨论】:

  • 先生,谢谢您,我在控制器中的检索怎么样?
  • 是的,没错。如果我的回答对您有帮助,请为我投票并批准我的工作。
  • 它对我不起作用,我真的很想赞成这个
  • 尝试从`$rd = $rfpMain->rfpDetails; ` to ` $rd = $rfpMain->rfpDetails(); `
  • BadMethodCallException 先生。谢谢你帮助我
猜你喜欢
  • 2023-02-07
  • 1970-01-01
  • 2018-02-10
  • 2014-08-11
  • 1970-01-01
  • 2021-04-06
  • 1970-01-01
  • 2020-03-26
  • 2013-06-11
相关资源
最近更新 更多