Php 如何查询laravel采集结果

Php 如何查询laravel采集结果,php,sql,laravel,collections,redis,Php,Sql,Laravel,Collections,Redis,我从一个存储过程中获取数据结果 数据就像SQL表。集合对象内的相同键(列名) 有没有办法查询(原始SQL查询)这个集合并获得我想要的最终结果数据 我研究了,我可以运行一些方法来查询集合,但这不是原始SQL查询(我需要对集合数据运行一些复杂的原始SQL查询) 理想情况下,我需要从集合数据创建一个临时SQL表。集合可以根据结果而不同,并且需要基于结果创建临时表 我还查看了redisserver,在那里我临时存储了我的集合并进行了查询,但没有找到任何可以存储为SQL表并在其上运行SQL查询的内容 第三

我从一个存储过程中获取数据结果

数据就像SQL表。集合对象内的相同键(列名)

有没有办法查询(原始SQL查询)这个集合并获得我想要的最终结果数据

我研究了,我可以运行一些方法来查询集合,但这不是原始SQL查询(我需要对集合数据运行一些复杂的原始SQL查询)

  • 理想情况下,我需要从集合数据创建一个临时SQL表。集合可以根据结果而不同,并且需要基于结果创建临时表

  • 我还查看了
    redisserver
    ,在那里我临时存储了我的集合并进行了查询,但没有找到任何可以存储为SQL表并在其上运行SQL查询的内容

  • 第三个选项是将结果数据存储在
    websql
    上并运行查询,但也需要从后端下载excel


  • 有没有人遇到过类似的问题?也许我可以用别的东西来解决这个问题

    您应该能够使用如下模型进行查询:

    //Query the db, and fetch collection with get()
    $userCollection = User
        ::where('function_id', 3)
        ->get();
    //Query the collection and fetch the first answer, resulting in a user model
    $pietPaulusma = $userCollection
        ->where('firstname', 'Piet')
        ->where('lastname', 'Paulusma')
        ->where('email', 'piet@paulus.ma')
        ->first();
    
    DB::table('users')
        ->select(DB::raw('count(*) as user_count, status'))
        ->where('status', '<>', 1)
        ->groupBy('status')
        ->get();
    
    或者没有这样的模型:

    //Query the db, and fetch collection with get()
    $userCollection = User
        ::where('function_id', 3)
        ->get();
    //Query the collection and fetch the first answer, resulting in a user model
    $pietPaulusma = $userCollection
        ->where('firstname', 'Piet')
        ->where('lastname', 'Paulusma')
        ->where('email', 'piet@paulus.ma')
        ->first();
    
    DB::table('users')
        ->select(DB::raw('count(*) as user_count, status'))
        ->where('status', '<>', 1)
        ->groupBy('status')
        ->get();
    
    DB::table('users'))
    ->选择(DB::raw('count(*)作为用户计数,status'))
    ->其中('状态','',1)
    ->groupBy(“状态”)
    ->get();
    
    如果你学习,你应该走得更远:)


    希望有帮助

    您可以使用
    querybuilder
    类编写原始sql查询。如果要检索某些数据,可以使用
    选择
    方法,如

    \DB::select('SELECT * FROM myTable WHERE ...'); // your complex query
    
    您可以将整个原始sql查询放在这个方法中。也可以使用prepare语句,如

    \DB::select('SELECT * FROM myTable WHERE id = ?', [2])
    
    以确保防止sql注入。

    上阅读有关原始查询的更多信息我需要对结果集合进行一系列聚合和操作。如果可能的话,在集合上使用原始SQL查询很容易。正如我提到的,我研究了所有方法,但需要运行原始SQL。我不使用其他方法,因为我需要从集合中检索数据。那么简单的旧“DB::raw('select*from users where id=1')就足够了。整个查询都可以放在那里。你可以将它与缓存相结合,如果你愿意,可以将结果存储在缓存中。我得到的结果集合每次都不一样。不同类型的数据可能会完全不同。那么我怎样才能创建temp呢。每次根据收集的数据在缓存中创建表。如果可能的话,我可以这样做。您想存储数据是因为它是一个长时间运行的查询(速度慢),还是因为它只是大量的数据,您不想一次又一次地通过apachesql连接?#1。我需要结果收集数据。我得到的#2.我需要基于#1的第二组数据。处理数以百万计的记录,无法进行另一个复杂的原始查询以再次从数据库中检索数据。(已经进行了一个大型查询以获取#1。)您要求进行原始查询,我向您展示了如何进行。如果要从此查询中获取集合,可以使用
    collect()
    方法。如果您的问题是关于特定的查询,那么您应该提供一些代码,并准确地告诉我们您正试图实现的目标。我想问的是,如何对集合进行原始查询。(不在数据库上。)正如我提到的,我确实使用store proc对数据库进行原始查询以获取集合。我需要查询该集合以获得第二组数据。如果我的问题不太清楚,我很抱歉。我会更新它,并会尽量使它更清楚。谢谢你的反馈。