lostyazilim

Json Çıktımı Sayfalandırmak İstiyorum (Pagination)

6 Mesajlar 964 Okunma
lstbozum
wmaraci reklam

halilyc halilyc labters.com Kullanıcı
  • Üyelik 14.12.2013
  • Yaş/Cinsiyet 31 / E
  • Meslek Web & Grafik ve iOS
  • Konum İstanbul Anadolu
  • Ad Soyad H** Y**
  • Mesajlar 837
  • Beğeniler 441 / 190
  • Ticaret 6, (%100)
Merhabalar arkadaşlar, Laravel frameworku kullanıyorum ve mesajlaşma uygulamam için kullanıcıların mesajlaşma listesini döndürdüğüm index fonksiyonum gayet güzel çalışıyor fakat ileride kullanıcılar çok mesajlaşınca çok fazla item olacak ve mesajların açılması uzun sürecek diye bu fonksiyona ->paginate(10) dahil edip her sayfada 10 item döndürüp infinite scroll yapacağımki performans sorunu yaşamayıp dileyen kullanıcı aşağı indikçe yeni mesajlar yüklensin.

Düşünce iyi hoş ama daha önce blogları veya postları listelemek için basit döngüler kullanıp sonuna ->paginate(10) ilave etmem yeterli oluyordu ama br yerden aldığım bu listeleme kodu çok karışık ve neresine ekleyeceğimi bulamadım, stackoverflowda onlarca yanıt geldi ama halen çözülemedi bir de şansımı buralarda deniyim dedim :)

ChatController.php dosyamdaki index() fonksiyonum;


public function index()
{
$contacts = [];
$user = request()->user();
// Loop through the contacts and format each one

Contact::for($user->id)->get()->each(function ($contact) use ($user, &$contacts) {
$friend = $contact->user1_id === $user->id ? $contact->user2 : $contact->user1;
$contacts[] = $friend->toArray() + ['room' => $contact->room->toArray()];
});

return response()->json($contacts);
}


Json Çıktısı : https://0bin.net/paste/WLY6DwFcmLzS5yBo#5LTEDczywJDW8VpD+V8Q00-lk3VeLNyF/AUlGfCcpPA
 

 

wmaraci
reklam

HapyMan HapyMan Full Stack Developer Kullanıcı
  • Üyelik 14.05.2016
  • Yaş/Cinsiyet 32 / E
  • Meslek What do you do exactly ?
  • Konum İstanbul Avrupa
  • Ad Soyad T** T**
  • Mesajlar 562
  • Beğeniler 171 / 208
  • Ticaret 0, (%0)
https://stackoverflow.com/questions/33225256/laravel-5-paginate-infinite-scroll-jquery bunu inceledin mi ?
halilyc

kişi bu mesajı beğendi.

halilyc halilyc labters.com Kullanıcı
  • Üyelik 14.12.2013
  • Yaş/Cinsiyet 31 / E
  • Meslek Web & Grafik ve iOS
  • Konum İstanbul Anadolu
  • Ad Soyad H** Y**
  • Mesajlar 837
  • Beğeniler 441 / 190
  • Ticaret 6, (%100)


şuan inceledim ama çok uzak bir örnek hocam malesef, ben mobil uygulama için kullanacağım bu fonksiyonu ve infinite scroll modelim vs herşeyim hazır zaten, sadece tek istediğim var olan json çıktımdaki item sayısını sayfa başına 10 olarak paginate edip json içerisinde laravelin temel yapısında olan current page, next page vb itemleri göstermek :) Onlar olduğu zaman mobilde modelim hazır zaten postları vs de o şekilde getiriyorum ama burdaki array biraz karışık olduğu için ->paginate(10) kısmını nereye eklemem gerektiğini bulamadım :)

Yani şunun gibi ;

$posts = Post::with('User')->orderBy('created_at', 'DESC')->paginate(10);
 

 

HapyMan HapyMan Full Stack Developer Kullanıcı
  • Üyelik 14.05.2016
  • Yaş/Cinsiyet 32 / E
  • Meslek What do you do exactly ?
  • Konum İstanbul Avrupa
  • Ad Soyad T** T**
  • Mesajlar 562
  • Beğeniler 171 / 208
  • Ticaret 0, (%0)
buradan cikan arrayi Collection yapmayi denedin mi ? kusura bakma tam olarak nasil bir yapi kurguladigini bilmedigim icin bisey diyemiyorum cok fazla.
halilyc

kişi bu mesajı beğendi.

wmaraci
wmaraci

halilyc halilyc labters.com Kullanıcı
  • Üyelik 14.12.2013
  • Yaş/Cinsiyet 31 / E
  • Meslek Web & Grafik ve iOS
  • Konum İstanbul Anadolu
  • Ad Soyad H** Y**
  • Mesajlar 837
  • Beğeniler 441 / 190
  • Ticaret 6, (%100)

HapyMan adlı üyeden alıntı

buradan cikan arrayi Collection yapmayi denedin mi ? kusura bakma tam olarak nasil bir yapi kurguladigini bilmedigim icin bisey diyemiyorum cok fazla.


Şuradaki dökümantasyonu takip edip kullanıcıların mesaj listesi için ContactController.php dosyasını oluşturdum hocam;

Açılan sayfada azcık aşağı inip

THE CONTACTS ENDPOINT başlığının altındaki kodlara bakarsanız ne yapmaya çalıştığımı daha rahat anlarsınız galiba hocam;

https://pusher.com/tutorials/ios-chat-app-swift-chatkit-part-2#creating-our-endpoints
 

 

halilyc halilyc labters.com Kullanıcı
  • Üyelik 14.12.2013
  • Yaş/Cinsiyet 31 / E
  • Meslek Web & Grafik ve iOS
  • Konum İstanbul Anadolu
  • Ad Soyad H** Y**
  • Mesajlar 837
  • Beğeniler 441 / 190
  • Ticaret 6, (%100)
Çözüm arayan olursa;

public function index()
{
$contacts = [];
$user = request()->user();
// Loop through the contacts and format each one

Contact::for($user->id)->get()->each(function ($contact) use ($user, &$contacts) {
$friend = $contact->user1_id === $user->id ? $contact->user2 : $contact->user1;
$contacts[] = $friend->toArray() + ['room' => $contact->room->toArray()];
});

// Get current page form url e.x. &page=1
$currentPage = LengthAwarePaginator::resolveCurrentPage();

// Create a new Laravel collection from the array data
$itemCollection = collect($contacts);

// Define how many items we want to be visible in each page
$perPage = 10;

// Slice the collection to get the items to display in current page
$currentPageItems = $itemCollection->slice(($currentPage * $perPage) - $perPage, $perPage)->all();

// Create our paginator and pass it to the view
$paginatedItems= new LengthAwarePaginator($currentPageItems , count($itemCollection), $perPage);


return response()->json($paginatedItems);
}
 

 

wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al