首页 > 解决方案 > Laravel 8 在 eloquent 查询中获取 SQL 错误,同时获取两个相关表的嵌套 JSON 响应

问题描述

我遇到 SQL 错误,模型名称正在连接两个表,列名称返回 'i_t_e_m__l_o_c__m_d_l_LOC_ID' 而不是 'LOC_ID'

Illuminate\Database\QueryException: SQLSTATE[42S22]: 
[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Invalid column name 'i_t_e_m__l_o_c__m_d_l_LOC_ID'. 
(SQL: select * from [tblDepartment] where [tblDepartment].[i_t_e_m__l_o_c__m_d_l_LOC_ID] in (1, 2))

这是我的模型代码

    protected $primarykey = 'LOC_ID';
    protected $connection = 'sqlsrv';
    protected $table = 'tblLocation';
   
    public function departments()
    { 
        return $this->hasMany(departmentsModel::class);
    }

这是给控制器的

    public function allLoc(Request $request){
    $data = locationModel::with('departments')->get();
    return response()->json($data);

标签: jsoneloquentlaravel-8

解决方案


在关系函数中定义外键

public function departments()
{ 
    return $this->hasMany(Comment::class, 'foreign_key', 'local_key');
}

有关更多详细信息,请查看:laravel.com/docs/8.x/eloquent-relationships#one-to-many


推荐阅读