首页 > 解决方案 > Laravel 从具有一对一关系的 2 列中获取值

问题描述

我有 2 张桌子,并且有一对一的关系。第二个表使用第一个表中的 FK,我想显示一个包含所有值的列表。

public function index(Request $request)
{
   $listOfPersons = new Person();
   $listOfRegisters = new  Register();

   $listOfRegisters->listOfPersons()->associate();
   return $listOfRegisters;
}

在寄存器模型

public function people(){
    return $this->hasOne(Person::class);
}

个人模型

public function register(){
    return $this->hasOne(Register::class);
}

标签: laraveleloquentlaravel-6

解决方案


如果您只想要一个包含所有值对的列表,那么以下代码就足够了:

public function index(Request $request)
{
    $registers = Register::all();
    $list = [];
    foreach($registers as $register){
        array_push($list,['register'=> $register, 'person'=>$register->people]);
    }
    return $list;
}

但请记住,您可以只拥有寄存器列表并通过关系访问该人。此外,您应该将hasOne关系更改为belongsToin register。

我希望这会有所帮助。


推荐阅读