Skip to content

Commit cf2547b

Browse files
committedJul 8, 2014
Merge pull request #13 from laravel-tr/4.2
4.2 'den merge
2 parents 5f6958a + f4c3c57 commit cf2547b

File tree

3 files changed

+67
-1
lines changed

3 files changed

+67
-1
lines changed
 

‎eloquent.md

+65
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
- [Belirsiz Silme](#soft-deleting)
88
- [Zaman Damgaları](#timestamps)
99
- [Sorgu Kapsamları](#query-scopes)
10+
- [Küresel Kapsamlar](#global-scopes)
1011
- [İlişkiler](#relationships)
1112
- [İlişkilerin Sorgulanması](#querying-relations)
1213
- [Ateşli (Eager) Yüklemeler](#eager-loading)
@@ -373,6 +374,70 @@ Parametreyi kapsamın çağrısına geçin:
373374

374375
$uyeler = Uye::ofType('moderator')->get();
375376

377+
<a name="global-scopes"></a>
378+
## Küresel Kapsamlar
379+
380+
Bazen, bir model üzerinde yapılan tüm sorgular için uygulanan bir scope tanımlamak isteyebilirsiniz. Aslında, Eloquent'in kendi "belirsiz silme" özelliği bu şekilde çalışmaktadır. Global scope'lar PHP trait'leri ve bir `Illuminate\Database\Eloquent\ScopeInterface` implementasyonu birlikte kullanılarak tanımlanırlar.
381+
382+
İlk olarak, bir trait tanımlayalım. Bu örnek için Laravel'le birlikte gelen `SoftDeletingTrait` kullanacağız:
383+
384+
trait SoftDeletingTrait {
385+
386+
/**
387+
* Boot the soft deleting trait for a model.
388+
*
389+
* @return void
390+
*/
391+
public static function bootSoftDeletingTrait()
392+
{
393+
static::addGlobalScope(new SoftDeletingScope);
394+
}
395+
396+
}
397+
398+
Eğer bir Eloquent modeli bir `bootTraitIsmi` isimlendirme kuralına uyan bir metoda sahip olan bir trait kullanırsa, bu Elequent modeli boot edildiği zaman o trait metodu çağrılacaktır. Bu size küresel bir kapsamı kayda geçirme ya da istediğiniz başka bir şey yapma fırsatı vermektedir. Bir scope `ScopeInterface` interface'ini implemente etmelidir, bu interface iki metoda sahiptir: `apply` ve `remove`.
399+
400+
Bunlardan `apply` metodu bir `Illuminate\Database\Eloquent\Builder` sorgu oluşturucu nesnesi alır ve bu kapsama eklemek istediğiniz ilave `where` cümlelerinin eklenmesinden sorumludur. `remove` metodu da bir `Builder` nesnesi alır ve `apply` tarafından gerçekleştirilen eylemlerin geri döndürülmesinden sorumludur. Başka bir deyişle, `remove` metodu eklenmiş olan `where` cümlesini (veya herhangi bir başka cümleyi) çıkarmalıdır. Dolayısıyla, bizim `SoftDeletingScope` için, bu metodlar buna benzer gözükecektir:
401+
402+
/**
403+
* Verilen bir Eloquent sorgu oluşturucusuna scope uygula.
404+
*
405+
* @param \Illuminate\Database\Eloquent\Builder $builder
406+
* @return void
407+
*/
408+
public function apply(Builder $builder)
409+
{
410+
$model = $builder->getModel();
411+
412+
$builder->whereNull($model->getQualifiedDeletedAtColumn());
413+
}
414+
415+
/**
416+
* Verilen Eloquent sorgu oluşturucusundan scope'u kaldır.
417+
*
418+
* @param \Illuminate\Database\Eloquent\Builder $builder
419+
* @return void
420+
*/
421+
public function remove(Builder $builder)
422+
{
423+
$column = $builder->getModel()->getQualifiedDeletedAtColumn();
424+
425+
$query = $builder->getQuery();
426+
427+
foreach ((array) $query->wheres as $key => $where)
428+
{
429+
// Eğer where cümlesi bir belirsiz silme date sınırlaması ise, onu sorgudan
430+
// kaldıracağız ve wheres'deki key'leri resetleyeceğiz. Bu, bu geliştiriciye,
431+
// tembel yüklenen bir ilişki sonuç kümesinde silinmiş modeli dahil etme imkanı verir.
432+
if ($this->isSoftDeleteConstraint($where, $column))
433+
{
434+
unset($query->wheres[$key]);
435+
436+
$query->wheres = array_values($query->wheres);
437+
}
438+
}
439+
}
440+
376441
<a name="relationships"></a>
377442
## İlişkiler
378443

‎schema.md

+1
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ Komut | Açıklama
8787
`$table->time('ikindi');` | TIME eşdeğeri sütun
8888
`$table->timestamp('eklenme_vakti');` | TIMESTAMP eşdeğeri sütun
8989
`$table->timestamps();` | **created\_at** ve **updated\_at** sütunlarını ekler
90+
`$table->rememberToken();` | VARCHAR(100) NULL olarak `remember_token` ekler
9091
`->nullable()` | İlgili sütunun NULL değerleri olabilir demektir
9192
`->default($deger)` | Bir sütun için ön tanımlı bir değer tanımlar
9293
`->unsigned()` | INTEGER'i UNSIGNED olarak ayarlar

‎security.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Laravel, kimlik doğrulanması işlerini çok basit hale getirmeyi amaçlamaktad
1919

2020
Şayet sizin uygulamanız Eloquent kullanmıyorsa, Laravel sorgu oluşturucusunu kullanan `database` kimlik doğrulama sürücüsünü kullanabilirsiniz.
2121

22-
> **Not:** Başlamadan önce `users` (veya dengi olan) tablonuzun 100 karakterlik string tipinde nullable bir `remember_token` sütunu taşıdığından emin olun. Bu sütun, uygulamanız tarafından sürdürülecek olan "remember me (beni hatırla)" session'ları için bir token saklamak amacıyla kullanılacaktır.
22+
> **Not:** Başlamadan önce `users` (veya dengi olan) tablonuzun 100 karakterlik string tipinde nullable bir `remember_token` sütunu taşıdığından emin olun. Bu sütun, uygulamanız tarafından sürdürülecek olan "remember me (beni hatırla)" session'ları için bir token saklamak amacıyla kullanılacaktır. Bu, bir migrasyonda `$table->rememberToken();` kullanılarak yapılabilir.
2323
2424
<a name="storing-passwords"></a>
2525
## Şifrelerin Saklanması

0 commit comments

Comments
 (0)