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*fromusers
Internal joinusers
上的Useru details
=Useru details
id
whereid
=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了解出了什么问题