我尝试在Laravel教程之后使用Eloquent在我的数据库中映射现有的一对一关系,但我收到一个字符串转换错误。
我必须使用其他程序使用的现有数据库,所以我不能更改数据库结构。
这是我的模型:
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.php命名空间应用\模型;
use Illuminate\Database\Eloquent\Model;
class EstadoCivil extends Model
{
protected $table = 'estados_civis';
}
我不知道该怎么做,但我得到了这个错误:
无法将类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();
}
}
如果我只使用return Pessoa::find($request->user()->pessoa_id)
,它可以很好地工作,并从pessoas表中正确返回数据。
发布于 2018-06-07 04:03:53
您返回的是关系,而不是实际的EstadoCivil集合。使用不带括号的return Pessoa::find($request->user()->pessoa_id)->estadoCivil
发布于 2019-10-03 16:06:43
必须使用->estadoCivil
而不是->estadoCivil()
https://stackoverflow.com/questions/50727861
复制相似问题