我的laravel 4.0应用程序发生了一些奇怪的事情。我有表用户和表格配置文件。在他们的模型中:
// app/models/User.php:
public function profile(){
return $this->hasOne('Profile', 'user_id');
}
// app/models/Profile.php:
public function user(){
return $this->belongsTo('User');
}
我确信表格配置文件中的所有行都有一个user_id,并且它在表格用户中有一个相应的用户,反之亦然。但是当我这样做时:
$users = User::with('profile')->get();
foreach($users as $user){
if(isset($user->profile)){
print($user->profile->name);
}
else{
print('profile is not set! why?!');
}
}
有时候我会收到消息“未设置个人资料!为什么?!”
那么,为什么?!
答案 0 :(得分:1)
也可能有其他原因。如果您确定相应的User
具有相关Profile
,请确保不删除这些配置文件。软删除模型经常会发生这种情况。如果您使用软删除,那么它也可能是一个问题。要了解你可以试试这些:
// Get the users who has related Profile
$users = User::has('profile')->with('profile')->get();
也试试这个:
// Get users with profile even soft deleted ones
$users = User::with(array('profile' => function($query) {
$query->withTrashed();
}))->get();
比较两个结果。这只是猜测。