Giriş yapmadınız.

#1 08.05.2019 12:30:20

coder2
Üye
Yer: Antalya
Kayıtlı: 09.12.2018
Mesajlar: 53

Relationship paginate ile aldıktan sonra links() kullanımı

Merhaba arkadaşlar,
aşağıda paylaştığım şekilde ilgili tablodan hasMany olarak ilişkili verilerimi de çekiyorum. Paginate ile çekiyorum fakat links() kullanamıyorum çünkü collection tipinde sadece veriler geliyor.
Çozüm onerisi olan var mı ?

        $user = Account::where('username', $username)->with(
            array(
                "posts" => function($query) {
                    $query->orderBy('postId', 'desc')->paginate(10);
                }
            )
            )->first();

Çevrimdışı

#2 08.05.2019 18:51:47

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,703
Website

Yanıt: Relationship paginate ile aldıktan sonra links() kullanımı

$user = Account::where('username', $username)->first();
$posts = $user->posts()>orderBy('postId', 'desc')->paginate(10);

// $posts->links()

Çevrimdışı

#3 09.05.2019 07:50:35

coder2
Üye
Yer: Antalya
Kayıtlı: 09.12.2018
Mesajlar: 53

Yanıt: Relationship paginate ile aldıktan sonra links() kullanımı

mgsmus yazdı:
$user = Account::where('username', $username)->first();
$posts = $user->posts()>orderBy('postId', 'desc')->paginate(10);

// $posts->links()

2 ayrı sorgu olmasın diye bu yontemi kullanmamış ve tek satırda yazmak istemiştim fakat sizde bu yontemi onerdiğinize gore başka yol yok. O halde bunu kullanacağız. Teşekkürler.

Çevrimdışı

#4 09.05.2019 09:17:17

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,703
Website

Yanıt: Relationship paginate ile aldıktan sonra links() kullanımı

Bu işi yapmanın bir çok yolu var. Ben size verdiğiniz örnekten yola çıkarak cevap yazdım. Amacınız 2. sorgu yapmamak ise (ki ben burada 2. sorgunun bir zararını görmüyorum);

$posts = Post::rightJoin('accounts', 'posts.account_id', '=', 'accounts.id')->where('accounts.username', $username)->orderBy('posts.postId', 'desc')->paginate(10);

// $posts->links()
$user = Account::with(['posts' => function($query) {
        return $query->orderBy('postId','desc');
    }])->where('username', $username)->first();

$page = LengthAwarePaginator::resolveCurrentPage();
$perPage = 10;
$offSet = ($page * $perPage) - $perPage;
$itemsForCurrentPage = array_slice($user->posts, $offSet, $perPage, true);

$posts = new LengthAwarePaginator($itemsForCurrentPage, count($data), $perPage, $page);

// $posts->links()

Çevrimdışı

#5 09.05.2019 14:02:20

coder2
Üye
Yer: Antalya
Kayıtlı: 09.12.2018
Mesajlar: 53

Yanıt: Relationship paginate ile aldıktan sonra links() kullanımı

mgsmus yazdı:

Bu işi yapmanın bir çok yolu var. Ben size verdiğiniz örnekten yola çıkarak cevap yazdım. Amacınız 2. sorgu yapmamak ise (ki ben burada 2. sorgunun bir zararını görmüyorum);

$posts = Post::rightJoin('accounts', 'posts.account_id', '=', 'accounts.id')->where('accounts.username', $username)->orderBy('posts.postId', 'desc')->paginate(10);

// $posts->links()
$user = Account::with(['posts' => function($query) {
        return $query->orderBy('postId','desc');
    }])->where('username', $username)->first();

$page = LengthAwarePaginator::resolveCurrentPage();
$perPage = 10;
$offSet = ($page * $perPage) - $perPage;
$itemsForCurrentPage = array_slice($user->posts, $offSet, $perPage, true);

$posts = new LengthAwarePaginator($itemsForCurrentPage, count($data), $perPage, $page);

// $posts->links()

Tekrardan teşekkür ederim. Aydınlatıcı oldu.

Çevrimdışı

#6 10.05.2019 07:24:01

neri
Üye
Kayıtlı: 24.07.2018
Mesajlar: 205

Yanıt: Relationship paginate ile aldıktan sonra links() kullanımı

mgsmus yazdı:

Bu işi yapmanın bir çok yolu var. Ben size verdiğiniz örnekten yola çıkarak cevap yazdım. Amacınız 2. sorgu yapmamak ise (ki ben burada 2. sorgunun bir zararını görmüyorum);

$posts = Post::rightJoin('accounts', 'posts.account_id', '=', 'accounts.id')->where('accounts.username', $username)->orderBy('posts.postId', 'desc')->paginate(10);

// $posts->links()
$user = Account::with(['posts' => function($query) {
        return $query->orderBy('postId','desc');
    }])->where('username', $username)->first();

$page = LengthAwarePaginator::resolveCurrentPage();
$perPage = 10;
$offSet = ($page * $perPage) - $perPage;
$itemsForCurrentPage = array_slice($user->posts, $offSet, $perPage, true);

$posts = new LengthAwarePaginator($itemsForCurrentPage, count($data), $perPage, $page);

// $posts->links()

Hocam bu sekilde kodlamak standarti bozmaz mi ?

Çevrimdışı

#7 10.05.2019 08:48:34

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,703
Website

Yanıt: Relationship paginate ile aldıktan sonra links() kullanımı

Nasıl bir standarttan bahsediyoruz?

Çevrimdışı

#8 10.05.2019 10:50:39

neri
Üye
Kayıtlı: 24.07.2018
Mesajlar: 205

Yanıt: Relationship paginate ile aldıktan sonra links() kullanımı

mgsmus yazdı:

Nasıl bir standarttan bahsediyoruz?

Laravel standarti, yani laravel de psr standartina sahip. Yoksa yanlis mi biliyorum

Son düzenleyen neri (10.05.2019 10:59:43)

Çevrimdışı

#9 10.05.2019 12:50:21

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 476

Yanıt: Relationship paginate ile aldıktan sonra links() kullanımı

Mgsmusun en son snippeti hangi psr standardına uymuyor mesela @neri...


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

#10 10.05.2019 13:27:41

neri
Üye
Kayıtlı: 24.07.2018
Mesajlar: 205

Yanıt: Relationship paginate ile aldıktan sonra links() kullanımı

deathisonitsway yazdı:

Mgsmusun en son snippeti hangi psr standardına uymuyor mesela @neri...

Uymuyor demedim hocam uyuyor mu diye sordum bilgi edinmek icin laravel dokumantasyonu disina cikarsak eger

Çevrimdışı

#11 10.05.2019 14:41:47

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 476

Yanıt: Relationship paginate ile aldıktan sonra links() kullanımı

https://www.php-fig.org/psr/

psr standartları bunlardır.Ha şöyle bir şey var,eğer kod kalitesine gerçekten önem veriyorsanız.Scrutinizeri bağlayın projenize o size hatalarınızı göstersin.


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

#12 10.05.2019 15:10:17

neri
Üye
Kayıtlı: 24.07.2018
Mesajlar: 205

Yanıt: Relationship paginate ile aldıktan sonra links() kullanımı

deathisonitsway yazdı:

https://www.php-fig.org/psr/

psr standartları bunlardır.Ha şöyle bir şey var,eğer kod kalitesine gerçekten önem veriyorsanız.Scrutinizeri bağlayın projenize o size hatalarınızı göstersin.

Hocam dokumantasyon disina cikmak dogru mu diye sordum alt tarafi tamam baglariz gosterir.

Çevrimdışı

#13 10.05.2019 15:37:39

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 476

Yanıt: Relationship paginate ile aldıktan sonra links() kullanımı

Kızdırmak için yazmıyorum bunları sana,yalnış anlama.Mantık olarak yeni bir şeyler oluşmaya çalışıyorsa sende şunu söyleyebilirim sana,Laravelin dökümantasyonu laraveli anlatır sana.Ama laravel demek herşey demek değil.Mgsmusun kodunda da dokumantasyon dışı bir şey yok [email protected]'a gözü kapalı güvenebilirsin.Psr yada code coverage dersen o başka bir şey olur...

Son düzenleyen deathisonitsway (10.05.2019 15:38:21)


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

#14 10.05.2019 16:55:07

neri
Üye
Kayıtlı: 24.07.2018
Mesajlar: 205

Yanıt: Relationship paginate ile aldıktan sonra links() kullanımı

deathisonitsway yazdı:

Kızdırmak için yazmıyorum bunları sana,yalnış anlama.Mantık olarak yeni bir şeyler oluşmaya çalışıyorsa sende şunu söyleyebilirim sana,Laravelin dökümantasyonu laraveli anlatır sana.Ama laravel demek herşey demek değil.Mgsmusun kodunda da dokumantasyon dışı bir şey yok [email protected]'a gözü kapalı güvenebilirsin.Psr yada code coverage dersen o başka bir şey olur...

Size msgsmus sineld bir kac arkadasimiz daha bazen sordugum sorulara verdiginiz kodlari projemde direkt kullaniyorum uzman ve yetkin oldugunuzu biliyorum cok yardimci oluyorsunuz. Bende biraz sert ciktigimi farkettim yanimdaki arkadasla siyasi bi konuda tartisiyorduk o sira sizde kusura bakmayin.

Çevrimdışı

#15 11.05.2019 10:33:41

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,703
Website

Yanıt: Relationship paginate ile aldıktan sonra links() kullanımı

Benim yazdığım kodlar PSR standartları kapsamında tartışılacak bir durumda değil. PSR standartları bir çeşit konsept/prototip/mimari tanımlamalarından ibaret. Benim yazdıklarım kod yazımı ile ilgili olan ilk ikisi dahilinde belki değerlendirilebilir ama amacım zaten burada soruya cevap vermek. Düzeltme, uygulamala, PSR ... vs bunlar arkadaşın sorumluluğu.

Ben sizin dediğinizi az çok anladığımı düşünüyorum. Sizin bahsettiğiniz dağınıklık sanırım. Doğrudur, hoş gözükmüyor. Böyle kodları direk controller içerisinde görmek istemem. Zamanla kontrol etmesi, okuması, bakımı zorlaşır, yazan kişi için bile. @coder2 örneğin bir AccountRepository ya da PostRepository oluşturabilir. Bunun içerisinde bir yöntem ile Account modeline ait Post'ları istediği şekilde çekebilir. Mantığı parçalara, mikro servislere bölebilir. Laravel içerisinde Container varken, DI ya da Dependecy Injection dediğimiz bağımlılık enjeksiyonu gibi imkanlarımız varken elbette Laravel'e özel işlemlerde Laravel'in özelliklerinin kullanılması daha doğru olacaktır. Bunların kullanımına bir çeşit "Laravel Standartı" denilebilir diye düşünüyorum. Bu durumda bunları mümkün kılan arka plandaki mimari PSR standartları ile oluşturulmuş; biz ise bunu Laravel yolu ile kullanmış olduk diyebiliriz. Sanırım bu sizin aradığınız cevap.

Diğer bir nokta da framework'ün arka planda ne yaptığını bilmek. Eager loading dediğimiz ilişkili kayıtların da ana sonuca dahil edilmesi yanılmıyorsam daha 1-2 yıldır JOIN kullanıyor. Daha önce o da birden fazla SELECT kullanıyordu. Siz farkında olmadan iki veya daha fazla sorgu yapıyordunuz. Bir de bu konuda basit ama çok sorgu mu yoksa az ama kompleks sorgu mu tartışması var. Birden fazla sorgu tek bir kompleks sorgudan daha fazla performanslı da olabilir tam tersi de olabilir. Bunlar çok değişken şeyler, her zaman doğru orantı olmuyor.

Tartışmalarda doz biraz yükselir, olabilir, önemli olan sonunu tatlıya bağlayabilmek. Sonra geriye bakınca insan pişman oluyor, ne gereği vardı diyor.

Çevrimdışı

Forum alt kısmı