雄辩的关系返回无法转换为字符串

Gus*_*ães 4 php laravel eloquent

我正在尝试按照 Laravel 教程使用 Eloquent 在我的数据库中映射现有的一对一关系,但我收到了一个字符串转换错误。

我必须使用其他程序使用的现有数据库,因此我无法更改数据库结构。

这是我的模型:

佩索阿.php

 namespace App\Models;

 use Illuminate\Support\Facades\Log; use
 Illuminate\Database\Eloquent\Model;

 class Pessoa extends Model {
     protected $table = 'pessoas';
     public function estadoCivil(){
         //return EstadoCivil::find($this->estado_civil_id);
         return $this->hasOne('App\Models\EstadoCivil', 'estado_civil_id');
     } 
 }
Run Code Online (Sandbox Code Playgroud)

EstadoCivil.php 命名空间 App\Models;

 use Illuminate\Database\Eloquent\Model;
 class EstadoCivil extends Model
 {
     protected $table = 'estados_civis';
 }
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么办,但我收到此错误:

类 Illuminate\Database\Eloquent\Relations\HasOne 的对象无法转换为字符串

我搜索了拼写错误和其他错误,但一无所获。我什至没有尝试将任何内容转换为字符串来获取此错误,数据库中 id 和外键的类型也是相同的。

这是使用它的控制器:

namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Pessoa as Pessoa;

class Eu extends Controller
{
    public function __construct()
    {
    }

    public function dadosCompletos(Request $request){
        return Pessoa::find($request->user()->pessoa_id)->estadoCivil();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我只是使用return Pessoa::find($request->user()->pessoa_id)它可以正常工作并从 pessoas 表中正确返回数据。

Mas*_*bin 6

您返回的是关系而不是实际的 EstadoCivil 集合。return Pessoa::find($request->user()->pessoa_id)->estadoCivil不带括号使用