• 13-12-2013, 16:29:21
    #1
    Arkadaşlar merhabalar ,
    bir müddettir Laravel ile uğraşmaktayım , bayağı bir yol katettiğime inanmaktayım ama bazı sorularım var

    anlaşılır olması için bayi örneği vereceğim..

    Veritabanımda 3 tablom var

    bayiler
    id - bayi_kodu - şifre - diğer bilgiler....

    idareciler
    id - bayi_id - tc - ad soyad - unvan - vs......

    personel
    id - bayi_id - tc - ad soyad - calistigi_bolum - iletişim - vs ......


    Bir şirketin bayileri var;
    • Her bayinin yönetici kadrosunda olarak Müdür , Müdür Yardımcısı ( birden fazla olabilir ) , Şefi var ( birden fazla olabilir )....
    • Her bayinin personelleri var...

    • (bayiler tablosu) Bayi kodu ve şifre ile sisteme giriş yapılıyor ( genelde giriş yetkisi müdürde )
    • (idareciler tablosu ) bayi_id alanı baz alınarak yetkili idareci kayıtları tutuluyor ( ünvan kısmı = müdür / müdür yard / şef )
    • (personel tablosu) bayi_id alanı baz alınarak çalışan personel bilgileri saklanıyor

    Eloquent nimetlerinden yeteri kadar yararlanamadığımı düşünmekteyim.

    bayiler (user modeli olarak kullanmaktayım )
    idareciler
    personel

    şeklinde üç modelim var.

    yapmak istediğim şu şekild ;

    bayiler::bul('bayi_kodu')->idareciler ; diyerek idareci bilgilerini çekmek istiyorum

    ya da

    bayiler::bul ('bayi_kodu')->personel()->ara('ad_soyad') ;

    şeklinde personel aramak istiyorum;

    ya da

    personel::bul('tc') diyerek aktif olan giriş yapan bayinin personellerinde TC yi bulmak istiyorum...

    gibi çoğaltılabilir.

    nasıl yapabilirim acaba, yardımcı olabilecek var mı

    umarım, çok uzun olmamıştır , kusura bakmayın
  • 13-12-2013, 18:26:39
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    İki ayrı konu açmışsınız diğer konuyu da içeren bir mesaj yazıyorum.

    Hazırladığınız bayilik sisteminde yetkisi faketmeksizin çalışanlar mevcut. Öyleyse yetkisi farketmeksizin her çalışan bir User olmalıdır.

    Veritabanı hazırlamak ihtiyaçlar belirlendikten sonra gelecekte çıkacak hesaplar da dahil edilip altıncı his ile bir yapı hazırlanır. Aksini söyleyenler olabilri, ben sıkıntı yaşamadım. Şimdi ben olsaydım veritabanı yapısını şöyle hazırlardım:

    employees (çalışanlar) tablosu: ./config/auth.php dosyasından tablo adını değiştirebilirsiniz.
    Schema::create('employees', function(Blueprint $table) {
    	$table->increments('id')->unsigned();
    	$table->string('real_name', 64);
    	$table->string('email', 64)->unique();
    	$table->string('password', 64);
    	$table->timestamps();
    
    	$table->index('birth_date');
    	$table->index('created_at');
    });
    employee_fiats (yetkiler) tablosu: Çalışan yetkilerini içerir. "Bölge Müdürü", "Bölge Yardımcısı" gibi.
    Schema::create('employee_fiats', function(Blueprint $table) {
    	$table->increments('id')->unsigned();
    	$table->string('name', 64); // Yetki adı.
    	$table->timestamps();
    
    	$table->index('created_at');
    });
    employee_fiat_relations (çalışan yetkileri) Hangi çalışanın hangi yetlilere sahip olduğunu gösterir. Yetki kontrol işlemlerini Employee sınıfına bir method ekleyerek yapabilirsiniz: Auth::user()->is_ceo([(int) $dealerID]) veya Auth::user()->is_co_ceo([(int) $dealerID]) gibi.
    Schema::create('employee_fiat_relations', function(Blueprint $table) {
    	$table->integer('fiat_id')->unsigned();
    	$table->integer('dealer_id')->unsigned(); // Bayinin ID'si.
    	$table->integer('employee_id')->unsigned();
    	$table->timestamps();
    
    	$table->index('created_at');
    });
    employee_works (çalışma saatleri) tablosu: Çalışma saatlerini sizin dediğiniz gibi burada tutacağız. Hangi gün kaç saat çalıştığını yazmaktansa başladığı ve bittiği tarihi yazmak daha mantıklı. İkisi arasındaki farkı alarak gösterim sırasında kaç saat çalıştığını yazdırabilirsiniz. Bu şekildeyken kişi gün içerisinde ara verip tekrar başlarsa bunu görebilirsiniz. Parmak izi doğrulaması ile giriş çıkışları otomatiğe başlayabilirsiniz.
    Schema::create('employee_works', function(Blueprint $table) {
    	$table->integer('employee_id')->unsigned();
    	$table->timestamp('started_on'); // Çalışmaya başladığı zaman
    	$table->timestamp('finished_on'); // Çalışmayı bıraktığı zaman
    
    	$table->index('employee_id');
    });
    dealers (bayiler) tablosu: Dealer adında bir model ihtiyacı var.
    Schema::create('dealers', function(Blueprint $table) {
    	$table->increments('id')->unsigned();
    	$table->string('adress');
    
    	$table->index('employee_id');
    });
    Örnek:
    Emplooye::works([DateTime $start, DateTime $end]); // $start ile $end tarihleri arasındaki kayıtları getirmeli.
    
    Dealer::find([int ID])->emplooyees(EmployeeFiat::CO_CEO); // Müdür yardımcılarını getirmeli.
    Ben olsaydım yukarıdaki gibi bir yapı kullanırdım. Daha geliştirilebilir tabii.