2017-05-25 15 views
0
Model: User 
Primary Key: emp_no (alphanumeric) 
Fields: password, remember_token 

Model: Employee 
Primary Key: emp_no (alphanumeric) 
Fields: first_name, last_name 

使用$users = Users::with('employee')->get();' 我能得到用户的各自的员工记录列表访问表的主键。Laravel:如何从结果

我可以通过

@foreach($users as $user) 
    {{ $user->emp_no}} //Not working, always returns 0 
    {{ $user->password }} //Working 
    {{ $user->remember_token }} //Working 
    {{ $user->employee->emp_no}} //Not working, always returns 0 
    {{ $user->employee->first_name }} //Working 
    {{ $user->employee->last_name }} //Working 
@endforeach 

迭代正如我评论,都试图以显示EMP_NO这对于既表不工作的主键。

+0

Laravel口才返回集合,你有你的$用户转换成数组。像'$ users-> toArray();'然后返回'$ users'来查看,你可以遍历它 –

+0

{{$ user-> employee_no}} //因为没有字段'employee_no'而不工作,使用' EMP_NO”。同样的{{$ user-> employee-> employee_no}} //不工作,因为你正在使用'employee_no'而不是'emp_no'。你的表有'emp_no'字段,所以使用这个字段。 –

+0

@MuhammadInaamMunir它只是一个错字这里对不起 – Roi

回答

0

有一些信息不足,我们在Laravel的IRC频道上聊了一会儿。问题是可能该模型仍然有$incrementing = true和他的主键是一个字符串。 $ incrementing属性需要设置为false。

另外,Eloquent假定主键是一个递增的整数值,这意味着默认情况下主键会自动转换为一个int。如果您希望使用非递增或非数字主键,则必须将模型上的public $ incrementing属性设置为false。

来源:https://laravel.com/docs/5.4/eloquent

+0

我发现了这个问题,抱歉关于我在IRC频道上的直流,ISP问题。现在的问题是我没有将'$ keyType'设置为字符串,这就是为什么每当我尝试访问emp_no时,它总是给出0而不是假定的字母数字值 – Roi