mysql如何乘最后一次这么多人投稿 (跳过) 与雄辩的查询生成器中 Laravel

标签: MySQL laravel
发布时间: 2015/6/11 22:31:12
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想写一个查询中使用雄辩滔滔,Laravel,但只是想最后 5 目前油田。 这是该查询:

    public static function past_profile_fan_likes($id) {
        $latest_profile_fan_likes = DB::table('fanartists')
                    ->join('artists', 'fanartists.artist_id', '=', 'artists.id')
                    ->orderBy('fanartists.created_at', 'DESC')
                    ->skip(4)
                    ->where('fanartists.fan_id', '=', $id)
                    ->select('artists.id', 'artists.fbid', 'artists.stage_name', 'artists.city', 'artists.state', 'artists.image_path', 'artists.description')
                    ->get();


        return $latest_profile_fan_likes;

    }

当调用这个时,我得到这个错误:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'offset 4' at line 1 (SQL: select `artists`.`id`, `artists`.`fbid`, `artists`.`stage_name`, `artists`.`city`, `artists`.`state`, `artists`.`image_path`, `artists`.`description` from `fanartists` inner join `artists` on `fanartists`.`artist_id` = `artists`.`id` where `fanartists`.`fan_id` = ? order by `fanartists`.`created_at` desc offset 4) (Bindings: array ( 0 => '1', ))

有什么我做错了这里吗? 或许会有跳过使用错了吗? 谢谢你的帮助。

解决方法 1:

您需要添加 take 为它添加顺序查询 LIMIT 查询并把它变成正确的语法;

DB::table('fanartists')
->join('artists', 'fanartists.artist_id', '=', 'artists.id')
->orderBy('fanartists.created_at', 'DESC')
->skip(4)
->take(100)
->where('fanartists.fan_id', '=', $id)
->select('artists.id', 'artists.fbid', 'artists.stage_name', 'artists.city', 'artists.state', 'artists.image_path', 'artists.description')
->get();

你将需要优良的限制如果使用偏移量,即使你不想限制。在这里看到: http://dev.mysql.com/doc/refman/5.0/en/select.html#id4651990

赞助商