Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将SQL转换为Laravel Elount_Laravel_Eloquent - Fatal编程技术网

将SQL转换为Laravel Elount

将SQL转换为Laravel Elount,laravel,eloquent,Laravel,Eloquent,我有一个SQL查询: SELECT m1.id FROM messages m1 WHERE m1.to_id = 1 AND m1.created_at < ( SELECT m2.created_at FROM messages m2 WHERE m2.from_id = m1.to_id AND m2.to_id = m1.from_id) GROUP BY m1.id 我怎样才能转化成雄辩的人?直到

我有一个SQL查询:

SELECT
  m1.id
FROM
  messages m1
WHERE
  m1.to_id = 1 AND m1.created_at < (
    SELECT 
      m2.created_at
    FROM
      messages m2
    WHERE
      m2.from_id = m1.to_id AND m2.to_id = m1.from_id)
GROUP BY
    m1.id
我怎样才能转化成雄辩的人?直到现在我才这么做,但a不知道在子查询的where部分该做什么

Message::where('to_id', 1)
            ->where('created_at', '<', function($q) {
               $q->from('messages');
               $q->select('created_at');
            })
            ->select('id')
            ->groupBy('id')
            ->get();
您可以尝试以下方法:

Message::where('to_id', 1)
            ->where('created_at', '<', function($q) {
                $q->from('messages AS m2')
                  ->select('created_at')
                  ->where('m2.from_id ','=', 'messages.to_id ')
                  ->where('m2.to_id','=','messages.from_id');
            })
            ->select('id')
            ->groupBy('id')
            ->get();

代码执行,但找不到任何结果。当我在数据库上运行sql时,它返回正常值。我认为问题在于子查询的位置,因为我用数字替换它们并返回结果。我这样做只是为了测试。->其中'm2.from_id','=','1'->其中'm2.to_id','=','2';您必须使用whereColumn而不是where。