【问题标题】:Laravel : Call to undefined method Illuminate\\Database\\Query\\BuilderLaravel:调用未定义的方法 Illuminate\\Database\\Query\\Builder
【发布时间】:2018-10-03 01:52:23
【问题描述】:

查询时使用 undefine 方法获取错误。只是我想从两个表中获取数据查询看看链接

  public static function userDetail($id){


    $result = User::whereHas('user_details', function ($query) {
        $query->where('user_details.user_id',$id);
    })->first();


    return $result ;
}

关系

在模型User定义关系

public function userDetails()
{
   return $this->hasOne(UserDetails::class);
}

userDetails 模型中

public function user()
    {
        return $this->belongsTo(User::class);
    }

【问题讨论】:

  • 'user_details' 应该是 userDetails in whereHas
  • 您还需要在此处添加use($id)function ($query) use ($id)

标签: laravel laravel-5.5


【解决方案1】:

只是改变

public static function userDetail($id){


$result = User::whereHas('user_details', function ($query) use($id) {
    $query->where('user_id',$id);
})->first();


return $result ;

}

【讨论】:

  • ` "SQLSTATE[42S22]: 找不到列:1054 'where 子句'中的未知列 'userDetails.user_id' (SQL: select * from users where exists (select * from user_details其中users.id = user_details.user_iduserDetails.user_id = 2) 限制 1)",`
  • 这意味着您的userDetails 表中的user_id 列不存在。
  • 如果可行,请接受答案并投票。 @Javed
【解决方案2】:

如果你不需要使用 static,你可以在 userDetails 上使用这个 $result 值

public function userDetail($id){

        $result = userDetails::where('user_id', '=', $id)->first();

        return $result ;
}

然后结果可以通过使用$value->user->{user property}从vale获取用户的访问权限

【讨论】:

    猜你喜欢
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 2014-04-25
    • 2017-02-20
    • 2017-10-04
    • 2018-05-17
    • 2015-12-17
    相关资源
    最近更新 更多