php - Laravel关系返回null

原文 标签 php mysql laravel orm laravel-4

我想用User模型创建简单的关系,以便在数据库中查找用户的配置文件信息。
在User.php中,我有:

class User extends Eloquent implements UserInterface, RemindableInterface {
    ...
    public function profile() {
        return $this->hasOne('UserProfile');
    }
    ...
}

在model/UserProfile.php中:
class UserProfile extends Eloquent{

    protected $table='user_profile';
    public function user() {
        return $this->belongsTo('User');
    }
}

在数据库中users.user_iduser_profile.user_id1000
我想使用控制器中的此行访问用户配置文件:
public function getIndex()
{

    $profile = $user->profile;
    dd( $profile );
    die;
}

dd()的结果是:
NULL

我的关系有什么问题?

最佳答案

似乎没有加载关系。
尝试使用eager-loading加载它们

User::with('user_profile')->get();

或者稍后使用延迟加载加载:
$user = Auth::user();
$user->load('user_profile');

另外,由于您使用的是id以外的另一个主键属性,因此需要指定它(或在关系声明中):
protected $primaryKey = 'user_id';

相关文章:

php - 从查询结果中获取mysql表名

php - 加入评论列表的表格,并确定用户是否已经对评论进行了投票

javascript - 无法从数据库获取新添加的行

mysql - 将一列分隔为多列

php - SQLSTATE [HY000] [1045]用户'landon_app'@'localhost'的访问被拒绝

php - 在PHP中使用变量创建预组装的HTML元素(请阅读以获得更好的解释)

javascript - 我的ID值在传递到其他刀片后未从第一个数字读取数字0

php - 使用API​​从Yahoo导入联系人

mysql - 如何使用查询构建器在三个表中进行查询?

php - 在最近3个小时内雄辩获取记录