【发布时间】:2019-05-10 22:34:14
【问题描述】:
解决方案:我使用了 db 门面,DB::select() 来运行原始 sql 查询。
我有两个表用户(id,用户名,城市,国家)和朋友(id,user_id,friend_id,状态)。 “users”表存储用户信息,“friends”表存储当前登录用户的id,friend_id是向当前用户发送好友请求的用户id,状态为“received”。我想显示用户信息以向当前用户发送请求。我的数据库查询语法是否正确?如果我不使用嵌套子查询,我可以看到正确的输出。提前致谢!
我的数据库查询:
$friendrequests = DB::table('users')->select(['username','city','country'])->where('id',DB::table('friends')->select('friend_id')->where([['status','received'],['user_id',$user->id]]));
我的html:
@extends('layouts.master')
@section('title')
Friend Requests
@endsection
@section('content')
@include('includes.message-block')
<section class="row requests">
<div class="col-md-6 col-md-offset-3">
<header><h3>Friend Requests</h3></header>
<div class="requestlist">
<header><h2>You have request from:</h2></header>
@foreach($users as $user)
<p>Name: {{ $user->username }}<br />City: {{ $user->city }}<br />Country:{{ $user->country }}</p>
<div class="interaction">
//stuff here
</div>
@endforeach
<a href="{{ URL::previous() }}">Back</a>
</div>
</div>
</section>
@endsection
路线:
Route::get('/friendrequests',[
'uses' => 'FriendController@getFriendRequests',
'as' => 'friendrequests',
'middleware' => 'auth'
]);
控制器(如果我不使用嵌套子查询就可以工作):
public function getFriendRequests()
{
$user = Auth::user();
$friendrequests = DB::table('users')
->select(['username','city','country'])
->where('id',
DB::table('friends')->select('friend_id')->where([['status','received'],['user_id',$user->id]])->get())->get();
return view('friendrequests',['users' => $friendrequests]);
}
【问题讨论】:
-
所以你想说让我得到他的朋友向他发送请求的用户?
-
我想向约翰展示他收到的所有好友请求。关系的状态属性决定了两个用户是否是朋友。状态可以具有以下值之一:已发送、已接收、已接受和已阻止。
-
不要编辑标题说它已解决。如果有人回答解决了它,请将其标记为正确(单击答案左侧的检查图标)。如果您自己解决,请帮助其他人发布解决方案(是的,您可以回答自己的问题)