2016-01-26 2 views
2

я в настоящее время у меня есть модель, как this-Laravel ORM - Пользовательский GroupBy месяц JSON ответ

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class UserSlidePhoto extends Model 
{ 
    protected $table="users_slides_photos"; 
    protected $fillable=['user_id','social_image_id','original_image_name','provider_key','provider_id','thumbnail_name']; 

    public $timestamps = true; 

    public function users() 
    { 
     return $this->belongsTo('App\User')->withTimestamps(); 
    } 
} 

и контроллер, как this-

public function rearrangePhotoMonth(Request $request) 
{ 
    //$ordering = $request->input('ordering'); 
    $thumbs = url('/uploads/userfiles/thumbs/')."/"; 
    $images = url('/uploads/userfiles/images/')."/"; 

    return UserSlidePhoto::where('user_id', Auth::id()) 
        ->selectRaw(
           " 
           DATE_FORMAT(created_at, '%M, %Y') as month, 
           id, 
           CONCAT('".$thumbs."',thumbnail_name) AS thumbnail_url, 
           CONCAT('".$images."',original_image_name) AS original_image_url" 
          ) 
        ->groupBy('month') 
        ->orderBy('month', 'desc') 
        ->get(); 
} 

И я получаю JSON ответ, как this-

[ 
    { 
    "month": "November, 2019", 
    "id": 7, 
    "thumbnail_url": "http:\/\/localhost:8000\/uploads\/userfiles\/thumbs\/2-aZa54HnAqwY2DPMlSVI2UpbRohVTlY.png", 
    "original_image_url": "http:\/\/localhost:8000\/uploads\/userfiles\/images\/2-aZa54HnAqwY2DPMlSVI2UpbRohVTlY.png" 
    }, 
    { 
    "month": "November, 2017", 
    "id": 1, 
    "thumbnail_url": "http:\/\/localhost:8000\/uploads\/userfiles\/thumbs\/2-Xfvn6b8rnE4loZjZOlv14c0FZYVT3A.png", 
    "original_image_url": "http:\/\/localhost:8000\/uploads\/userfiles\/images\/2-Xfvn6b8rnE4loZjZOlv14c0FZYVT3A.png" 
    }, 
    { 
    "month": "November, 2016", 
    "id": 4, 
    "thumbnail_url": "http:\/\/localhost:8000\/uploads\/userfiles\/thumbs\/2-A7rlDeFmMybmXNUtcxKyEtzM9TPywq.png", 
    "original_image_url": "http:\/\/localhost:8000\/uploads\/userfiles\/images\/2-A7rlDeFmMybmXNUtcxKyEtzM9TPywq.png" 
    }, 
    { 
    "month": "November, 2011", 
    "id": 3, 
    "thumbnail_url": "http:\/\/localhost:8000\/uploads\/userfiles\/thumbs\/2-NfMq71wghF7Al3Fn4KS3SG9ylC4ayo.png", 
    "original_image_url": "http:\/\/localhost:8000\/uploads\/userfiles\/images\/2-NfMq71wghF7Al3Fn4KS3SG9ylC4ayo.png" 
    }, 
    { 
    "month": "November, 2009", 
    "id": 5, 
    "thumbnail_url": "http:\/\/localhost:8000\/uploads\/userfiles\/thumbs\/2-r6jxeFfV7nnLrMxO5l88sC7Pt0Xq1A.png", 
    "original_image_url": "http:\/\/localhost:8000\/uploads\/userfiles\/images\/2-r6jxeFfV7nnLrMxO5l88sC7Pt0Xq1A.png" 
    }, 
    { 
    "month": "November, 2008", 
    "id": 9, 
    "thumbnail_url": "http:\/\/localhost:8000\/uploads\/userfiles\/thumbs\/2-ivnXQ5ZA1y2mVVxcRtmH3UFd41Xdg3.png", 
    "original_image_url": "http:\/\/localhost:8000\/uploads\/userfiles\/images\/2-ivnXQ5ZA1y2mVVxcRtmH3UFd41Xdg3.png" 
    }, 
    { 
    "month": "March, 1996", 
    "id": 2, 
    "thumbnail_url": "http:\/\/localhost:8000\/uploads\/userfiles\/thumbs\/2-YgLYcr5DsB3kHjpa7cxcznjiEFdzeF.png", 
    "original_image_url": "http:\/\/localhost:8000\/uploads\/userfiles\/images\/2-YgLYcr5DsB3kHjpa7cxcznjiEFdzeF.png" 
    } 
] 

Но я хотел бы получить ответ, как this-

[ 
    { 
    "month": "January 2015", 
    "data": { 
     { 
     "id": 6, 
     "thumbnail_url": "http:\/\/localhost:8000\/uploads\/userfiles\/thumbs\/2-WujsXF8iNSuwxQX4QRebKkOqFinlJV.png", 
     "original_image_url": "http:\/\/localhost:8000\/uploads\/userfiles\/images\/2-WujsXF8iNSuwxQX4QRebKkOqFinlJV.png" 
     }, 
     { 
     "id": 8, 
     "thumbnail_url": "http:\/\/localhost:8000\/uploads\/userfiles\/thumbs\/2-VcgQcjoi0iXM2YOqhgt0fYUZf8kwsE.png", 
     "original_image_url": "http:\/\/localhost:8000\/uploads\/userfiles\/images\/2-VcgQcjoi0iXM2YOqhgt0fYUZf8kwsE.png" 
     }, 
     { 
     "id": 5, 
     "thumbnail_url": "http:\/\/localhost:8000\/uploads\/userfiles\/thumbs\/2-r6jxeFfV7nnLrMxO5l88sC7Pt0Xq1A.png", 
     "original_image_url": "http:\/\/localhost:8000\/uploads\/userfiles\/images\/2-r6jxeFfV7nnLrMxO5l88sC7Pt0Xq1A.png" 
     } 
    } 
    }, 
    { 
    "month": "March 2015", 
    "data": { 
     { 
     "id": 2, 
     "thumbnail_url": "http:\/\/localhost:8000\/uploads\/userfiles\/thumbs\/2-YgLYcr5DsB3kHjpa7cxcznjiEFdzeF.png", 
     "original_image_url": "http:\/\/localhost:8000\/uploads\/userfiles\/images\/2-YgLYcr5DsB3kHjpa7cxcznjiEFdzeF.png" 
     }, 
     { 
     "id": 9, 
     "thumbnail_url": "http:\/\/localhost:8000\/uploads\/userfiles\/thumbs\/2-ivnXQ5ZA1y2mVVxcRtmH3UFd41Xdg3.png", 
     "original_image_url": "http:\/\/localhost:8000\/uploads\/userfiles\/images\/2-ivnXQ5ZA1y2mVVxcRtmH3UFd41Xdg3.png" 
     } 
    } 
    }, 
    { 
    "month": "January 2016", 
    "data": { 
     { 
     "id": 3, 
     "thumbnail_url": "http:\/\/localhost:8000\/uploads\/userfiles\/thumbs\/2-NfMq71wghF7Al3Fn4KS3SG9ylC4ayo.png", 
     "original_image_url": "http:\/\/localhost:8000\/uploads\/userfiles\/images\/2-NfMq71wghF7Al3Fn4KS3SG9ylC4ayo.png" 
     } 
    } 
    } 
] 

Может ли кто-нибудь помочь?

ответ

0

Я решил это так ПУТЬ

public function rearrangePhotoMonth(Request $request) 
{ 
    //$ordering = $request->input('ordering'); 
    $thumbs = url('/uploads/userfiles/thumbs/')."/"; 
    $images = url('/uploads/userfiles/images/')."/"; 

    $collection = UserSlidePhoto::where('user_id', Auth::id()) 
        ->selectRaw(
           " 
           DATE_FORMAT(created_at, '%M, %Y') as month, 
           id, 
           CONCAT('".$thumbs."',thumbnail_name) AS thumbnail_url, 
           CONCAT('".$images."',original_image_name) AS original_image_url" 
          ) 
        ->orderBy('created_at', 'desc') 
        ->get(); 

    return collect($collection) 
      ->groupBy('month') 
      ->all(); 
} 

Он работает сейчас :).

0

A group by предоставит вам только одну строку в месяц.

Если есть некоторая красноречивая магия, я еще не знаю (что, вероятно, так и есть), вам придется проанализировать массив через PHP для организации ваших данных.

1

У вас есть плохие запросы, просто запустите его, чтобы увидеть, что он возвращает только одну строку за каждый месяц.

Таким образом, вы должны удалить group_by положение и сделать это вручную в PHP или использовать laravel collections

Смежные вопросы