Php 联接表并查找并获取指定的行laravel

Php 联接表并查找并获取指定的行laravel,php,mysql,laravel,laravel-5,eloquent,Php,Mysql,Laravel,Laravel 5,Eloquent,我试图从联接表中获取一条指定的记录,我的查询如下 $user = Auth::user(); //current authenticated user $user_id = $user->id; //get the current authenticated user's id $users = DB::table('users') //join table users and table user_details base from matched id; ->join('

我试图从联接表中获取一条指定的记录,我的查询如下

$user = Auth::user(); //current authenticated user
$user_id = $user->id; //get the current authenticated user's id
$users = DB::table('users') //join table users and table user_details base from matched id;
    ->join('user_details', 'users.id', '=', 'user_details.id')
    ->find($user->id) //find the record matched to the current authenticated user's id from the joint table records
    ->get(); //get the record
dd(var_dump($users)); //dump result
但不幸的是,它给了我这个错误

SQLSTATE[23000]:完整性约束冲突:where子句中的1052列“id”不明确(SQL:select*from
users
Internal join
users
上的
Useru details
=
Useru details
id
where
id
=1限制1)


所以我打赌我的查询是错误的,哈哈!不管怎样,有什么帮助和想法吗?

您应该在用户详细信息表中使用“用户id”(而不仅仅是“id”),因为 它不知道where子句中的表id属于什么

  • user\u details
    表中的
    id
    更改为
    user\u id
  • 尝试以下操作:
    ->join('user\u details'、'users.id'、'='、'user\u details.user\u id')
  • 如果不想更改数据库,请执行以下操作:
    ->find($user->id)
    替换为
    ->where('users.id',“=”,$user->id)

    您应该在user\u details表中使用'user\u id'(而不仅仅是'id'),因为 它不知道where子句中的表id属于什么

  • user\u details
    表中的
    id
    更改为
    user\u id
  • 尝试以下操作:
    ->join('user\u details'、'users.id'、'='、'user\u details.user\u id')
  • 如果不想更改数据库,请执行以下操作:
    ->find($user->id)
    替换为
    ->where(“users.id”),“=”,$user->id)
    ,因为错误本身描述了它应该在哪些表上设置条件,所以您需要将
    find
    替换为
    where

    ->where("users.id",$user->id)
    
    而不是

    ->find($user->id)
    

    由于错误本身描述了它应该在哪些表上设置条件,因此您需要将
    find
    替换为
    where
    ,如

    ->where("users.id",$user->id)
    
    而不是

    ->find($user->id)
    
    尝试以下方法:使用
    where()
    方法,而不是
    find()
    方法。 这将起作用。

    尝试以下方法:使用
    where()
    方法,而不是
    find()
    方法。
    这将起作用。

    它不知道where子句中的
    id
    属于哪个表。将
    ->find($user->id)
    更改为
    ->where(“users.id”、“=”、$user->id)
    ,它应该适合您。@Uchiha的答案是正确的,但是,为什么不按常规使用Laravel,让生活更轻松呢?您将创建一个详细信息模型,其记录位于详细信息数据库表中,并定义用户只有一个详细信息。然后,你可以$user->load('detail')在你的第二行代码上,然后用它来完成。那会很酷,但我现在仍然在学习关系模型的东西,据我目前所知,这是我在这个快速阶段项目中所能做的最好的事情。它不知道where子句中的表
    id
    属于哪个表。将
    ->find($user->id)
    更改为
    ->where(“users.id”、“=”、$user->id)
    ,它应该适合您。@Uchiha的答案是正确的,但是,为什么不按常规使用Laravel,让生活更轻松呢?您将创建一个详细信息模型,其记录位于详细信息数据库表中,并定义用户只有一个详细信息。然后,你可以$user->load('detail')在你的第二行代码上完成它。那会很酷,但我现在仍然在学习关系模型的东西,就我目前的知识而言,这是我在这个快速阶段项目中所能做的最好的。请加上一些解释-为什么这样做有效?这样的解释将有助于OP了解出了什么问题。请添加一些解释-为什么这样做有效?这样的解释将有助于OP了解出了什么问题