• 28-11-2013, 22:31:38
    #1
    Laravelde, bir model içince şu şekilde bir metodum var.


    		
    	public static function mudur(){
    		 
    		 $m = static::where('kullanici_id', '=', Auth::user()->id  )
    					->where('anahtar','=', Auth::user()->id . '_mudur')
    					->first()
    					->deger ;
    
    		return $m;
    	}
    Veritabanım da şu şekilde.

    Alıntı
    id | kullanici_id | anahtar | deger

    1 | 16 | 16_mudur | ali veli

    2 | 15 | 15_mudur | Hasan Hüsen

    bu sorguda hata yakalama işlemini bir türlü yapamadım.

    Ör : Auth::user()->id değerim 16 veya 15 ise sorgu düzgün çalışıyor.
    Ama Auth::user()->id değeri 20 olursa doğal olarak hata veriyor.
    ( hata : Trying to get property of non-object )

    benim yapmak istediğim
    if ( is_null ($m) ) gibi bir koşul ile , sorgu boş gelmişse false değerini döndürmek. ama ne yaptıysam olmuyor hep hata sayfasına düşüyor.

    Bu konuda yardımcı olabilecek var mı acaba ?
  • 28-11-2013, 23:05:22
    #2
    "Auth::user()->id" kısmı oturum açmış bir kullanıcıdan geliyorsa, hiçbir zaman 20 numaralı id değeri gelmemesi lazım, olmayan bir kullanıcı çünkü. Fonksiyonu da sadece oturum açılmışsa kullanman lazım.
  • 28-11-2013, 23:06:32
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Şöyle bi' yöntem geliştirsek bilmiyorum Laravel ile uygulama geliştirmediğim için sağlıklı bi' yardımda bulanamayacağım ama şöyle bi' yol gösterebilirim.

    <?php
    	
    	$user = Auth::user();
    
    	if(isset($user->id))
    		#@valid
    	else
    		#@isnt-valid
    veya

    if(Auth::check())
    	#@logged-in
  • 29-11-2013, 12:18:13
    #4
    Veritabanında olmayan bir ID değeri ile AUTH sınıfında nasıl oturum açılmış olabiliyor? (Burada bir terslik var gibi) Ayrıca bu sorgudan önce kullanıcının oturumunun olup olmadığını kontrol ediyor musunuz?

    if (Auth::check()) {
        // Kullanıcının oturumu var. Burada sorgu çalıştırılabilir.
    } else {
        // Kullanıcının oturumu yok. Uyarı verelim.
    }
    Hatta burası sadece üyenin görebileceği bir alansa oturum kontrolünü direk route ile çözebilirsin.

    Route::get('bilgileri-duzenle', array(
      'before' => 'auth', 
      'uses'   => 'xController@edit')
    );
  • 29-11-2013, 23:45:26
    #5
    Yardımcı olan herkese teşekkürler . Örneği verirken yanlış verdim sanki kusura bakmayın.
    burada Auth::user()->id değeri , dediğiniz gibi oturum açan kullanıcı .
    ama daha tüm kullanıcılar bilgilerini güncellemedikleri için her kullanıcı için olmayan degerler var.
    Alıntı
    id | kullanici_id | anahtar | deger

    1 | 16 | 16_mudur | ali veli

    2 | 15 | 15_mudur | Hasan Hüsen
    burada iki veriyi ben ekledim ama sistemde 100 kullanıcı var diyelim.

    bu durumda 17_mudur , 18_mudur ..... 100_mudur anahtarlarının bulunduğu alanlar henüz kayıt edilmedi.

    kullanıcının bu veriyi yönetim panelinden kendisinin güncellemesi gerekli.

    eksik veri olduğu içinde ilk mesajdaki hatayı almaktayım.

    Bu sorunun temel kaynağı , aktif olan bir sisteme sonradan eklemeler yapmak durumunda kalmam.
    veritabanına yeni alanlar, yeni html formlar eklendiği için eksik veriler oluyor

    umarım derdimi anlatabildim
    yardımcı olanlara çok teşekkürler.
  • 01-12-2013, 13:15:39
    #6
    ->first()->deger şeklinde doğrudan attribute'e ulaşmaya çalışmışsınız. Onun yerine:

    public static function mudur(){
      $m = static::where('kullanici_id', '=', Auth::user()->id  )
                        ->where('anahtar','=', Auth::user()->id . '_mudur')
                        ->first();
    
      if ($m)
        return $m->deger;
    
      return false;
    }
  • 01-12-2013, 13:38:19
    #7
    Lavarel nedir?
  • 01-12-2013, 14:49:17
    #8
    nurettin adlı üyeden alıntı: mesajı görüntüle
    Lavarel nedir?
    Laravel = Php Framework.

    Bknz : http://laravel.com/
  • 01-12-2013, 22:02:27
    #9
    Hkan adlı üyeden alıntı: mesajı görüntüle
    ->first()->deger şeklinde doğrudan attribute'e ulaşmaya çalışmışsınız. Onun yerine:

    public static function mudur(){
      $m = static::where('kullanici_id', '=', Auth::user()->id  )
                        ->where('anahtar','=', Auth::user()->id . '_mudur')
                        ->first();
    
      if ($m)
        return $m->deger;
    
      return false;
    }
    Evet sorun dediğiniz gibiymiş. Doğrudan attribute'e ulaşmaya çalıştığım için sorun yaşmışım

    verdiğiniz örnekle sorun çözüldü, teşekkürler.