Giriş yapmadınız.

Duyuru

LARAVEL KİTAP DUYURUSU:
Laravel 5 : Laravel 5.1 Güzelliği (Türkçe)
Laravel 4 : Laravel 4 (Türkçe)

#1 11.01.2017 01:13:06

XnCN
Üye
Kayıtlı: 11.01.2017
Mesajlar: 2

Laravel çoklu referans sistemi?

Merhabalar laravel ile bir proje geliştiriyorum ve projede referans sitemine yer veriyorum bu referans sistemi çoklu bir referans sistemi olucak yapmak istediğim şey benim referansımı ve referanslarımın referanslarını max. 5. kişisine kadar çekmek sadece mail 'i çekmek istiyorum. Bunun için 2 adet tablom var.

referanslar tablosu
g2vyV5.png
ve üyeler tablosu
Pn2B65.png

Bunun için user modelim'de

  public function getmyrefs()
  {
   return $this->hasMany('AppReferance','referer');
  }

kodunu kullanıyorum ve controllerim'de

 $pages = User::with('getmyrefs')->get()->groupBy('ref')->toJson();
  echo $pages;

komutuyla çekebiliyorum gelen json kodu:

{
  "0": [{
    "id": 1,
    "name": "Aydemir Eray Han",
    "email": "[email protected]",
    "country": "TR",
    "ref": 0,
    "created_at": "2017-01-09 21:42:44",
    "updated_at": "2017-01-09 22:10:06",
    "getmyrefs": [{
      "id": 4,
      "referer": 1,
      "ref": 12,
      "money": 0,
      "created_at": "2017-01-09 22:03:15",
      "updated_at": "2017-01-09 22:03:15"
    }, {
      "id": 5,
      "referer": 1,
      "ref": 13,
      "money": 0,
      "created_at": "2017-01-09 22:03:59",
      "updated_at": "2017-01-09 22:03:59"
    }, {
      "id": 8,
      "referer": 1,
      "ref": 17,
      "money": 0,
      "created_at": "2017-01-10 13:34:50",
      "updated_at": "2017-01-10 13:34:50"
    }]
  }],
  "1": [{
    "id": 12,
    "name": "Deneme1",
    "email": "[email protected]",
    "country": "",
    "ref": 1,
    "created_at": "2017-01-09 22:03:15",
    "updated_at": "2017-01-09 22:03:34",
    "getmyrefs": []
  }, {
    "id": 13,
    "name": "Deneme2",
    "email": "[email protected]",
    "country": "",
    "ref": 1,
    "created_at": "2017-01-09 22:03:59",
    "updated_at": "2017-01-09 22:04:25",
    "getmyrefs": [{
      "id": 6,
      "referer": 13,
      "ref": 14,
      "money": 0,
      "created_at": "2017-01-09 22:04:49",
      "updated_at": "2017-01-09 22:04:49"
    }]
  }, {
    "id": 17,
    "name": "Deneme4",
    "email": "[email protected]",
    "country": "",
    "power": 1,
    "ref": 1,
    "created_at": "2017-01-10 13:34:50",
    "updated_at": "2017-01-10 13:35:18",
    "getmyrefs": []
  }],
  "13": [{
    "id": 14,
    "name": "Deneme3",
    "email": "[email protected]",
    "country": "",
    "ref": 13,
    "created_at": "2017-01-09 22:04:49",
    "updated_at": "2017-01-09 22:05:54",
    "getmyrefs": []
  }]
}

benim istediğim gelen json da country ref vb. şeylerin olmaması , referansın adının ve bakiyesinin yazmasıyla ek olarak referansımın referansının max 5. kisisine kadar çekmesi
örneğin

ahmet -(bir alt ref)> Mehmet
(mehmetin refleri)-------------->Ali
(mehmetin refleri)-------------->Ali
(mehmetin refleri)-------------->Ali
(mehmetin refleri)-------------->Ali
(mehmetin refleri)-------------->Ali
(mehmetin refleri)-------------->Ali Son

Ali Son ve sonrası çekilmiyicek Koduma nasıl bir ekleme yapmam gerekiyor.
Yardımcı olabilircek varmı?

Çevrimdışı

#2 11.01.2017 03:38:06

ak
Üye
Yer: İstanbul
Kayıtlı: 12.07.2014
Mesajlar: 23

Yanıt: Laravel çoklu referans sistemi?

Merhaba,

    	$pages = User:: with(['getmyrefs' => function ($query) {
		//$query->select('email');
    		$query->orderBy('id', 'asc'); // $query->orderBy('id', 'desc'); 
    		$query->take(5);
    	}])
    	->get()
    	->groupBy('ref')
    	->toJson();
    	echo $pages;
$query->select('email');

satırı olduğunda veri gelmedi, siz yine de deneyiniz, bu şekilde  5 kayıt çekebilirsiniz.
Düzeltme :
Tek kullanıcı ile denemiştim, birden fazla kullanıcıda with / limit 5 sadece 5 kayıt gelir.
Tek bir sorgu ile yapılabilir mi bilmiyorum,

       $users = \App\User::groupBy('ref')->get();
        foreach ($users as $user) {
            $ref= $user->getmyrefs()->select('email')->take(5)->get();
        }

Bu şekilde her bir kullanıcı için 5 kayıt çekilebilir.
İyi çalışmalar..

Son düzenleyen ak (11.01.2017 17:13:55)

Çevrimdışı

#3 11.01.2017 20:32:26

XnCN
Üye
Kayıtlı: 11.01.2017
Mesajlar: 2

Yanıt: Laravel çoklu referans sistemi?

ak yazdı:

Merhaba,

    	$pages = User:: with(['getmyrefs' => function ($query) {
		//$query->select('email');
    		$query->orderBy('id', 'asc'); // $query->orderBy('id', 'desc'); 
    		$query->take(5);
    	}])
    	->get()
    	->groupBy('ref')
    	->toJson();
    	echo $pages;
$query->select('email');

satırı olduğunda veri gelmedi, siz yine de deneyiniz, bu şekilde  5 kayıt çekebilirsiniz.
Düzeltme :
Tek kullanıcı ile denemiştim, birden fazla kullanıcıda with / limit 5 sadece 5 kayıt gelir.
Tek bir sorgu ile yapılabilir mi bilmiyorum,

       $users = \App\User::groupBy('ref')->get();
        foreach ($users as $user) {
            $ref= $user->getmyrefs()->select('email')->take(5)->get();
        }

Bu şekilde her bir kullanıcı için 5 kayıt çekilebilir.
İyi çalışmalar..

Hocam ilgilendiğiniz için teşekkürler bu 5. kişiye kadar olayı şöyle benim referanslarım-benim referanslarımın referansları->benim referanslarımın referanslarının referansları...... olayı basit bir yapı kurdum suan ordan gidiyorum  referanslar controllerim'de böyle bir fonksiyon yaptım önce kendi reflerimi alıyorum ardından kendi reflerimin içindeki kişilerin reflerini alıyorum böyle 5 adet döngü kullanıp yapmak geldi aklıma dün aksam ama bunu tek döngüde nasıl yaparım onu düşünüyorum.
suanki sistemimde kendi reflerimi $ref1=$this->get_refs(id) şeklinde alıyorum ardından alta foreach($ref1.... ) olarak döngü olusturup $ref2 yi olustuyorum.

public function get_refs($id,$limit=-1)
    {
      $ref= Referance::leftJoin('users', 'users.id', '=', 'referances.ref')
      ->select('users.name', 'referances.ref','referances.id', 'referances.money','users.created_at')
      ->where('referer',$id)
      ->where('state',2)
      ->limit($limit)
      ->get();
      return $ref;
    }

Çevrimdışı

Forum alt kısmı