您好,他想度过一个国家的美好时光。但是我遇到了错误。
基本上这是结构
员工 有网站, 现场 有地区 区域 有休息日
我已经在员工模型中声明了这一点
public function restdays()
{
return $this->hasManyThrough('App\ref_restdays', 'App\ref_gacomsit', 'region', 'region');
}
但是我得到这个错误
[Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Conversion failed when converting the varchar value 'RUAE' to data type int. (SQL: select [ref_restdays].*, [ref_gacomsit].[region] from [ref_restdays] inner join [ref_gacomsit] on [ref_gacomsit].[id] = [ref_restdays].[region] where [ref_gacomsit].[region] in (855))
显然,它仍使用我的站点主文件的ID,就像我声明要使用REGION外键一样。
谁能解释我的错误在哪里?感谢您的帮助。
答案 0 :(得分:0)
原来,我不需要使用hasManyThrough。我刚刚在网站主文件上声明了hasMany,如下所示:
public function restdays()
{
return $this->hasMany( 'App\ref_restdays', 'region', 'region');
}
然后,我只需使用点语法对查询使用嵌套的紧急加载。
这是我的最终查询,在最后一行,我只引用site.restdays以获取休息日列表。
$employees = hr_employee::select(
'hr_employee.id',
'empno',
'first_name',
'family_name',
'empstatus',
'empstatus_eff_date',
'contcatg_code',
'post_title_code',
'cs',
'group_initial_joined',
'returned_date',
'mcat2',
'othours1',
'othours2',
'othours3'
)
->where([
['empno','=',$empno]
])
->with(['catg', 'post', 'site.restdays'])
->get();