Php Laravel Join仅选择一个匹配项
我目前正试图从“organizations”表中获取一些信息,然后需要从“organization_stocks”表中获取有关此组织的一些值,但我只想要最新的匹配项,并且只想要那个匹配项(因此每个组织1个匹配项) 这是我当前的代码,但正如您所看到的,它返回属于同一组织的多行Php Laravel Join仅选择一个匹配项,php,mysql,laravel,laravel-4,Php,Mysql,Laravel,Laravel 4,我目前正试图从“organizations”表中获取一些信息,然后需要从“organization_stocks”表中获取有关此组织的一些值,但我只想要最新的匹配项,并且只想要那个匹配项(因此每个组织1个匹配项) 这是我当前的代码,但正如您所看到的,它返回属于同一组织的多行 $data = DB::table('organization_stocks') ->rightJoin('organizations', 'organizations.id',
$data = DB::table('organization_stocks')
->rightJoin('organizations', 'organizations.id', '=', 'organization_stocks.organization_id')
->select('organizations.id', 'organizations.name', 'organization_stocks.value', 'organization_stocks.change', 'organization_stocks.state')
->where('active', '=', '1')
->orderBy('organization_stocks.timestamp', 'desc')
->take(5)
->get();
谢谢。如果您只想要最新的匹配,只需使用
->first()
而不是->get()
,因为您已经在订购它们了,所以应该没问题。我假设timestamp
是您在创建的列
您可以在此处查看更多信息:
文档中给出的示例:$comments=Post::find(1)->comments()->where('title','=','foo')->first()代码>
编辑:如果您需要进一步阅读,只需正确设置模型关系,就可以实现您想要的功能,而不需要所有连接。本文可能会有所帮助:但是我是否也可以使用first()获得5行?(正如你所看到的,我拿了5个条目->拿(5))我很困惑,因为你提到:“但我只想要最新的匹配,而且只有那一个”。你只想要一个还是五个?正如我所说,您可能最好正确配置关系。我需要的是“organizations”表中的5行,我需要“organization_stocks”表中关于这些组织的一些信息,但是有多个表,其中“organizations.id'、“=”、“organization_stocks.organization_id”。每次它得到一个'organization.id'、'='、'organization\u stocks.organization\u id'时,它不应该从与该“organization.id”相关的“organization\u stocks”中获得更多的行,而是转到下一个需要相关信息的条目。