Возврат красноречивых отношений не может быть преобразован в строку - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь отобразить существующее отношение один к одному в моей базе данных, используя Eloquent после учебника laravel, и я получаю ошибку преобразования строки.

Я должен использовать существующую базу данных, которая используетсядругой программой, поэтому я не могу изменить структуру базы данных.

Это мои модели:

Pessoa.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');
    } 
}

Пространство имен EstadoCivil.phpApp \ Models;

use Illuminate\Database\Eloquent\Model;
class EstadoCivil extends Model
{
    protected $table = 'estados_civis';
}

Я не знаю, что делать, но получаю эту ошибку:

"Объект класса Illuminate \ Database \ Eloquent \ Relations \ HasOne моглане быть преобразованным в строку "

Я искал печатные и другие ошибки и не смог ничего найти, я даже не пытался преобразовать что-либо в строку, чтобы получить эту ошибку, типы в базе данных для идентификатораи ключ foreing тоже не изменился.

EDIT 1:

Вот контроллер, который его использует:

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();
    }
}

Если я просто использую return Pessoa ::find ($ request-> user () -> pessoa_id) работает нормально и возвращает данныеправильно из таблицы пессо.

1 Ответ

0 голосов
/ 06 июня 2018

вы возвращаете отношение, а не фактическую коллекцию EstadoCivil.используйте return Pessoa::find($request->user()->pessoa_id)->estadoCivil без скобок

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...