samet.k87 wrote:ruz.:)
1- Validation kontrolünü modeller de yapmak istiyorum. Bu modeli besleyen farklı formlarım var. Örneğin form1 den gelen zorunlu alanlar ile form 2 den gelen zorunlu alanlar farklı olabilmekte. bu nedenle gelen duruma göre ayrı ayrı ruleslar oluşturmak gerekiyor. Yapmak istediğim gelen değerleri tek rules ile kontrol edeyim. yani gelen değerlerin içerisnde, rules arrayında tanımladığım alan yoksa dikkate almasın. Diğer türlü hata alıyorum zaten. Bu konuyla alakalı iyi fikirleriniz ve yönlendirmeleriniz benim için çok iyi olucak.
Tek bir modeli kulanan bir den fazla controller var ise ve bu controllerin ortak yönleri yok ise ayrı ayrı controller'da validation yapmak daha mantıklıdır. Ama ortak noktaları var ise birbirlerini extends edebilirler. En azından kontrol methodlarını bir keren yazarsınız tüm kontroller yazıdığınız controlleri extends edebilirler. Kod yazarken kendinizi tekrar etmememiş okursunuz. Trait'de yazılabilir. Sonra controllerin içine dahil edilebilir.
Model'de yapmaya kalkarsanız model tam çorba olur. Modellerde daha çok veri işleme, denetleme(setter, getter) filtreleri ya ilişkili tablolara veri akışı sağmak için idealdir.
Temel bir validation sınıfı yazılabilir. Eğer bu sınıf validate etmekten başka işler yapmayacaksa sorun olmaz.
Aslnda temel mantık şu sınıf ve methodlar hiçbir zaman bir çok işi yapan yekpare yapılar olmamalı ki bir değişiklik yaptığınızda, tüm yapı birden çökmesin ve de değişiklikler kolay olsun.
samet.k87 wrote:
3- hasOne ile ilişkileri kurulmuş modellerime bir seferde veri kaydetmek istiyorum.. Ama kaydetmiyor. Eloquent böyle bişeye izin vermiyor mu yoksa ben nerde hata yapıyorum? ayrıca ilişkisi olan tablolarda ayrı ayrı kaydetsem bile $fillable değerlerini tanımlamadan foreingkeyleri kaydetmedi. tablodaki foreingkey leri fillable olarka tanımladığımda ancak kaydetti. burdaki fillable olayı nedir. ibrde bunun tam tersi var guard. bunları nerde nasıl kullanacağımı tam kavrayamadım. dökümandan baktım ama anlamadım pek. ezbere bir yazım oldu yani. Anlamı dışında bir anlam yüklemek istemiyorum kendi kafamda :)
Eloquent kavramak biraz zordur. Çokça deney yapmak lazım. O zaman kavramaya başlarsınız. Olanaklarını tam öğrendiğinizde size az kodla devasa işler yaptırır.
$fillable dizisine toplu veri kayıdı için kolonları eklersiniz. $guard'da ise toplu veri kayıdı yaparken korunacak olan kolonları kayıt edersiniz. Buradaki amaç, hata yapmamak ve güvenliktir.
Projemde kullandığım basit bir hasmany ilişkisi.
/**
* Defining releation to ProCategoryImage
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function ProCategoryImages() {
return $this->hasMany('ProCategoryImage', 'procategory_id', 'id');
}
Model içinde örnek kullanım
/**
* To add image path for Product Category
*
* @param array $data ['/foo/bar.png']
* @return boolean
*/
public function addImage(array $data) {
foreach ($data as $value) {
// 'procategory_id => 1 olan bir referans id girmek zorunda kalmadım.
// çünkü hasmay ilşikisinde veriler modelde tanımlanan foreingkeyleri ile ilşkilendirilir.
$return = $this->ProCategoryImages()->create(['path' => $value])->save();
if ($return === false || $return === null) {
return false;
}
}
return true;
}