【问题标题】:How to write this complex query in Laravel?如何在 Laravel 中编写这个复杂的查询?
【发布时间】:2015-08-04 06:26:05
【问题描述】:

大家好,请问我怎么写这个查询:

$laureats=Laureat::select('laureats.*')
    ->from(DB::raw(" SELECT laureats.nom FROM laureats,traces WHERE laureats.id=traces.laureat_id AND traces.etat_id=$etat
            and traces.etat_id=(select etat_id from traces where traces.laureat_id=laureats.id ORDER BY traces.dateTrace desc limit 1)"))
    ->get();

【问题讨论】:

  • 请尝试解释这段代码的作用:)
  • 是的,我想搜索 Laureat(Model),他的最后一个 $etat 是我传入的参数。这里我有两个表 laureats 和 traces,第一个(laureats)的主键是第二个的外键。

标签: laravel laravel-4 eloquent laravel-5 query-builder


【解决方案1】:

你刚才问的一切都在docs

我看到您正在运行一个带有 AND 的 WHERE 子句的 SELECT 查询,以及一个 where 子句中的另一个查询。

我来给你解释一下:

仅使用 laureats.nom 选择查询,结果将如下所示:

$nom = DB::table('laureats')->pluck('nom');

使用多个 where's:

$nom = DB::table('laureats')->where('votes', '>', 100)->where('votes', '>', 100)->pluck('nom');

你可以像这样在另一个查询中运行一个查询:

->where(function($query)
        {
            $query->select(DB::raw(1))
                  ->from('traces')
                  ->whereRaw('something = something');
        })

这有点像。由于这些都在文档中,您应该自己尝试一下。

【讨论】:

  • 这是 SQL 中的一些查询:SELECT laureats.* FROM laureats,traces WHERE laureats.id=traces.laureat_id AND traces.etat_id=3 and traces.etat_id=(select etat_id from traces where traces .laureat_id=laureats.id ORDER BY traces.dateTrace desc 限制 1)
  • 这是一个改变搜索方式的参数。
猜你喜欢
  • 2015-03-28
  • 2016-04-23
  • 1970-01-01
  • 2021-09-10
  • 2016-03-24
  • 1970-01-01
  • 2019-09-21
  • 1970-01-01
相关资源
最近更新 更多