Php Laravel 4动态查询输出错误

Php Laravel 4动态查询输出错误,php,mysql,laravel,laravel-4,eloquent,Php,Mysql,Laravel,Laravel 4,Eloquent,我在我的模型中有一个查询函数,我试图让它接受特定偏移量的输入和返回行的限制。这是查询功能: public static function friend_activity_json($start = 0, $number_of_posts = 2) { $friend_activity = DB::table('fanartists') ->join('fans', 'fanartists.fan_id', '=', 'fans

我在我的模型中有一个查询函数,我试图让它接受特定偏移量的输入和返回行的限制。这是查询功能:

public static function friend_activity_json($start = 0, $number_of_posts = 2) {
        $friend_activity = DB::table('fanartists')
                        ->join('fans', 'fanartists.fan_id', '=', 'fans.id')
                        ->join('artists', 'fanartists.artist_id', '=', 'artists.id')
                        ->orderBy('fanartists.created_at', 'DESC')
                        ->skip($start)
                        ->take($number_of_posts)
                        ->select('fans.fbid', 'fans.first_name', 'fans.last_name', 'fans.gender', 'fans.city', 'fanartists.artist_id', 'artists.stage_name', 'fanartists.created_at')
                        ->get();

        $posts = $json_encode($friend_activity);

        return $posts;

    }
调用此查询函数时,会出现以下错误:

    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 0' at line 1 (SQL: select `fans`.`fbid`, `fans`.`first_name`, 
`fans`.`last_name`, `fans`.`gender`, `fans`.`city`, `fanartists`.`artist_id`, 
`artists`.`stage_name`, `fanartists`.`created_at` from `fanartists` inner join `fans` on 
`fanartists`.`fan_id` = `fans`.`id` inner join `artists` on `fanartists`.`artist_id` = 
`artists`.`id` order by `fanartists`.`created_at` DESC offset 0) (Bindings: array ( )) 

你知道问题是什么吗?谢谢你的帮助

查询中缺少
LIMIT
关键字和行数。该语法无效

查询应该类似于:

... DESC LIMIT 2 OFFSET 0
OFFSET
关键字是
LIMIT
子句的一部分,它不能单独出现。因为它不是有效的SQL,所以根本不清楚为什么Eloquent会生成这样的结果


跟进:

验证
$numberofposts
的计算结果是否为非负整数,以便生成有效的LIMIT子句。如果
$number\u of\u posts
包含的内容不是LIMIT的有效值,则不太可能生成无效的SQL


(看起来查询生成器中的错误正在生成一条语句,其中包含
偏移量
,但没有相应的
限制

我刚刚尝试了你的代码,如果我为
$start
$number\u posts
提供了一个非空的正值,那么它在这里确实有效r_of_posts
,我得到的查询与您得到的查询完全相同,因此我猜您可能在向函数传递
$number_of_posts
时失败了

在检查源代码时,在
illumb\Database\Query\Builder
take
方法中,我们可以看到原因:

/**
 * Set the "limit" value of the query.
 *
 * @param  int  $value
 * @return \Illuminate\Database\Query\Builder|static
 */
public function take($value)
{
    if ($value > 0) $this->limit = $value;

    return $this;
}
它仅在值大于0时设置限制值。

而不是:

$users = User::offset(5)->get();
使用:

必须同时使用limit()和offset()


1000000-随机大数字,因为我们不想限制任何内容

Laravel的文档显示我应该使用skip()和take()作为偏移量和限制?我应该如何修改上面的查询?
$users = User::limit(10000000)->offset(5)->get();