Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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
Php 通过更好的SQL获取使laravel提要更快?_Php_Mysql_Sql_Laravel 5 - Fatal编程技术网

Php 通过更好的SQL获取使laravel提要更快?

Php 通过更好的SQL获取使laravel提要更快?,php,mysql,sql,laravel-5,Php,Mysql,Sql,Laravel 5,为了一个学校项目,我一直在制作这个帖子、故事和小组的提要。但是我发现它很慢。 我正在考虑在SQL部分强制进行更多的处理,而不是在php端进行处理 我用的是来自的搜索工具。而且速度非常快。所以我很确定这是php代码: 而且算法也不是很好,所以我可以对下面的代码使用另一种意见/提示和技巧 应该放在FeedTransformer中的东西是一组Post、Story和Group模型。 然后将它们转换为一种像样的Json输出格式。在那里,我做了一些事情,比如Post->User,然后get被传递给userT

为了一个学校项目,我一直在制作这个帖子、故事和小组的提要。但是我发现它很慢。 我正在考虑在SQL部分强制进行更多的处理,而不是在php端进行处理

我用的是来自的搜索工具。而且速度非常快。所以我很确定这是php代码:

而且算法也不是很好,所以我可以对下面的代码使用另一种意见/提示和技巧

应该放在FeedTransformer中的东西是一组Post、Story和Group模型。 然后将它们转换为一种像样的Json输出格式。在那里,我做了一些事情,比如Post->User,然后get被传递给userTransformer,它要求用户名等等,这样做是可能的,通过做不同的事情,它也可以得到优化

public function feed() {
    // pagination stuff
    $perPage = 15;
    $page = (Input::has( 'page' )? Input::get( 'page' ) : 1);
    $offset = ( ( $page - 1 ) * $perPage );

    // feed start
    $feed = new Collection();
    // start arrays
    $posts = new Collection();
    $stories = new Collection();
    $groups = Auth::user()->groups;

    // check if user has friends
    if (Auth::user()->friends()->count() != 0) {
      // get from good relationship
      $friendCollection = Auth::user()->friends()->Where( 'relationShipStatus', '>', '50' );

      // get all posts
  $posts = Post::has( 'Stories', '=', 0 )->has( 'Group', '=', 0 )->whereIn(
    'user_id', $friendCollection->lists( 'id' )
  )->orWhere( 'user_id', Auth::user()->id )->has( 'Stories', '=', 0 )->has( 'Group', '=', 0 )->with('user')->get();

      // get those stories
      $stories = Story::whereIn(
        'user_id', $friendCollection->lists( 'id' )
      )->orWhere( 'user_id', Auth::user()->id )->get();
    }

    // merge together
    $posts->isEmpty() ?: $feed = $feed->merge( $posts );
    $stories->isEmpty() ?: $feed = $feed->merge( $stories );
    $groups->isEmpty() ?: $feed = $feed->merge( $groups );

    // sort by updated date
    $feed->isEmpty() ?: $feed = $feed->sortBy( 'updated_at' )->reverse();

    // apply pagination
    $userFeed = new Paginator( $feed->slice( $offset, $perPage, true )->all(), $feed->count(), $page );
    return $this->RespondWithPagination( $userFeed, $feed->count(), [ 'data' => FeedTransformer::transformCollection( $userFeed ) ] );
  }
所有型号均可在此处找到: 变压器可在此处找到:

我已经把时间缩短到了3秒左右。我可以做一些改变,但我认为算法可以更好


我尝试添加->和标签,但这些似乎并没有降低速度。。。调用保持不变,对吗?

输出应该是什么?请提供更多信息。您需要什么数据?@Jerodev更新了描述您的转换器正在运行查询获取和计数等,您的主要代码位运行不必要的查询,您有重复的代码位,例如列出您的好友集合,您正在选择所有数据,然后对其进行切割和分页。有很多要看的