Php Laravel Join仅选择一个匹配项

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',

我目前正试图从“organizations”表中获取一些信息,然后需要从“organization_stocks”表中获取有关此组织的一些值,但我只想要最新的匹配项,并且只想要那个匹配项(因此每个组织1个匹配项)

这是我当前的代码,但正如您所看到的,它返回属于同一组织的多行

        $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”中获得更多的行,而是转到下一个需要相关信息的条目。