如何在Laravel中访问其他相关的模型数据?

时间:2017-02-01 06:02:10

标签: php laravel

我正在创建用户个人资料页面,我想从用户模型和 UserProfile 模型中检索数据。但是我在获得结果时遇到了问题。这就是我的所作所为:

用户模型

class User extends Authenticatable
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password', 'username',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];
    /*
    public function isAdmin() {
        return $this->admin;
    }
    */

    public function profile() {
        return $this->hasOne('App\UserProfile');
    }

}

UserProfile模型

class UserProfile extends Model
{
    protected $table = 'user_profile';

    protected $fillable = [
        'phone',
        'address'
    ];

    public function user() {
        return $this->belongsTo('App\User');
    }
}

然后我访问了我的ProfileController中的关系

  public function getProfile($username) {

        $user = User::with('user_profile')->where('username', $username)->get();

        dd($user);



    }

我收到了这个错误:

Call to undefined relationship [user_profile] on model [App\User].

user_profile 是我的表名

1 个答案:

答案 0 :(得分:1)

使用正确的关系名称:

$user = User::with('profile')->where('username', $username)->first();

此外,在这种情况下,您应该使用first()方法来获取用户对象。