Laravel DB custom



我有两个类似的表

Table tname            Table tfriend
id   name              id   nameid   friendid
1    rick              1    1        2
2    roy               2    1        3
3    richard           3    2        1
4    3        1

我想要像这个一样的输出

id   name     friends
1    rick     roy, richard
2    roy      rick
3    richard  rick

我已经把这个查询数据库做成这样:

$friend = DB::select('SELECT id, name, (SELECT friendid as friends from tfriends WHERE nameid = id) FROM tname')->get()

但是select内部的select即使在SQL查询中也不起作用,我应该在查询中写些什么才能使它正确?

您可以尝试一下:选择(id,name,(从tfriend中选择tname.name,tname where(从tffriend中选择tfriend.id,tname其中tname.id=tfriend.nameid)=tname.id)作为好友)

您需要在变量中有id并连接到查询中,如果是整数,您可以使用简单的串联样式,不带点,也不带引号,例如>

$query = DB::select(" SELECT * (SELECT friendid as friends from tfriends WHERE nameid = $id) FROM tname");
var_dump($query);

我在这个中使用的解决方案有点棘手

首先,我使用与tname的联接表tfriend声明我的Db的2个,并定期为表tname声明,然后我将其发送到我的刀片

第二,如果我的刀片中有其他类似的东西,我会这样做

@foreach ($names $name)
{{$name->id}}
{{$name->name}}
@foreach ($friends as $friend)
@if ($friend->nameid == $name->id)
{{$friend->name}}<br>
@endif
@endforeach
@endforeach

最新更新