- 我有两个这样的表:
用户
id email
1 abc@ibm.com
2 abc@hp.com
3 abc@google.com
grp_members
grp_id user_id
1 2
2 2
13 1
13 3
2.我的模型
在那里,一个组成员必须是一个用户,所以它只是 GroupMember 的一对一关系。
关于表用户的用户模型
class Users extends Eloquent {
protected $table = "users";
}
关于表 group_members 的 GroupMember 模型
class GroupMember extends BaseModel{
protected $table = "grp_members";
public function user(){
return $this -> hasOne('Users', 'id');
}
}
3.在我的服务GroupApi.php
中,如果我有这样的查询
class GroupApi {
public function queryGroupMembers(){
$result = GroupMember::all();
var_dump(get_class(GroupMember::all())); //CODE ONE
foreach($result as $ret){
var_dump(get_class($ret)); //CODE TWO
var_dump(get_class($ret -> user)); //CODE THREE
}
}
}
如您所见,当我var_dump(get_class(GroupMember::all()))
在CODE ONE调用时,我得到了这个
.string(39) "Illuminate\Database\Eloquent\Collection"
是的,这就是我想要的。
现在,在CODE TWO,它打印
string(11) "GroupMember"
是的,也是正确的对象,但是当代码转到CODE THREE时,它给了我一个惊喜,输出如下:
string(8) "GroupApi"
为什么它是 GroupApi 的实例,而不是Users
or的实例GroupMember
在那种情况下,我该如何调用$ret -> user
?
欢迎任何想法,非常感谢。