Giriş yapmadınız.

Duyuru

TÜRKÇE KİTAP DUYURUSU:
Laravel 5 : Laravel 5.1 Güzelliği (Türkçe)
Vue.js 2 : Vue.js 2 Majesteleri (Türkçe)

#1 28.01.2019 23:04:57

ysf
Üye
Kayıtlı: 06.02.2017
Mesajlar: 39

İki Sorguyu Karşılaştırma

Herkese selamlar,
Öncelikte destekleriniz için teşekkür ederim.

Örneğin;
1. Aşama : Bir Kullanıcı açmaktayım ve bu kullanıcıya birden fazla şirketin yetkisini vermekteyim.
2. Aşama : Sisteme personeller eklenebilmektedir ve bu personellerin yine aynı mantıkta birden fazla şirkete ait olabilmektedir.
Benim buradaki amacım user'in ilgili şirketlerini tespit edip ona ait personelleri sıralayabilmek veya eklerken sadece o şirkete personeller ekleyebilmek.

Örnek Veritabanı İlişkisi
ZX9MGo.jpg

3. Aşama : Sisteme ürünler eklenebilmektedir ve bu ürünler bir adet şirkete ait olabilmektedir.
Benim buradaki amacım user'in ilgili şirketlerini tespit edip ona ait ürünleri sıralayabilmek veya eklerken sadece o şirkete ürün ekleyebilmek.

Örnek Veritabanı İlişkisi
nQORPR.jpg

Sizce bu problemi nasıl çözebilirim, tecrübeli arkadaşların bilgilerine danışmak isterim.
iyi çalışmalar dilerim.

Son düzenleyen ysf (28.01.2019 23:17:39)

Çevrimdışı

#2 29.01.2019 12:59:38

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,500
Website

Yanıt: İki Sorguyu Karşılaştırma

+--------------------------+---------------+----------------------+
|       Model/Pivot        |     Tablo     |       Sütunlar       |
+--------------------------+---------------+----------------------+
| \App\User                | users         | name, email vs.      |
| \App\Staff               | staff         | name, email vs.      |
| \App\Company             | compaines     | name vs.             |
| \App\Product             | products      | name, company_id vs. |
| \App\Pivots\CompanyUser  | company_user  | user_id, company_id  |
| \App\Pivots\CompanyStaff | company_staff | company_id, staff_id |
+--------------------------+---------------+----------------------+

app/User.php

// Kullanıcıya ait firmalar
public function companies()
{
    return $this->belongsToMany(Company::class)->using(CompanyUser::class);
}

// Kullanıcıya ait ürünler
public function products()
{
    return $this->hasManyThrough(Product::class, CompanyUser::class, 'user_id', 'company_id', 'id', 'company_id');
}

app/Company.php

// Firmaya ait ürünler
public function products()
{
    return $this->hasMany(Product::class, 'company_id');
}

// Firmanın ait olduğu kullanıcılar
public function users()
{
    return $this->belongsToMany(User::class)->using(CompanyUser::class);
}

// Firmaya ait çalışanlar
public function staff()
{
    return $this->belongsToMany(Staff::class)->using(CompanyStaff::class);
}

app/Product.php

// Ürünün ait olduğu firma
public function company()
{
    return $this->belongsTo(Company::class, 'company_id');
}

app/Staff.php

// Şirket personelinin ait olduğu firmalar
public function companies()
{
    return $this->belongsToMany(Company::class)->using(CompanyStaff::class);
}

app/Pivots/CompanyUser.php

namespace App;

use Illuminate\Database\Eloquent\Relations\Pivot;

class CompanyUser extends Pivot
{
}

app/Pivots/CompanyStaff.php

namespace App;

use Illuminate\Database\Eloquent\Relations\Pivot;

class CompanyStaff extends Pivot
{
}

Çevrimdışı

#3 29.01.2019 16:37:37

sineld
Yönetici
Yer: Bursa
Kayıtlı: 26.12.2012
Mesajlar: 1,419
Website

Çevrimdışı

#4 29.01.2019 16:47:57

bhdr
Üye
Kayıtlı: 09.06.2018
Mesajlar: 73

Yanıt: İki Sorguyu Karşılaştırma

sineld yazdı:

@mgsmus senin gönderilerini okullarda ders diye okutsalar yeridir.

@mgsmus hocam gerçekten mükemmel biri, her konuda. Laravel konusunda aşmış, bilgiyi çekirgelere enjekte ediyor resmen smile

Sizi tenzih ediyorum @sineld hocam..

Çevrimdışı

#5 29.01.2019 17:09:39

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,500
Website

Yanıt: İki Sorguyu Karşılaştırma

Teşekkür ederim ama ben inanın biliyorsam yazıyorum, bilmiyorsam dokümanlara bakıp yazıyorum, dokümanlarda yazmıyorsa koda bakıp yazıyorum, kod yoksa artık ben kendim yazıp paylaşıyorum. Bunlar sizlerin kolaylıkla yapabileceği şeyler, sadece biraz motivasyona ve yönlendirmeye ihtiyacınız var diye düşünüyorum.

Üstte paylaştığım kodların hepsini tamamen aklımdan yazmam mümkün değil ama hemen bir tane sıfırdan Laravel kurdum, artisan make:model Company --migration diye model ve migrasyonları oluşturdum, sonra örnek veri için bir tane Seeder hazırladım. Sonra test edip burada paylaştım.

Her paylaştığım şey için ben de bir şeyleri öğreniyorum ya da üstünden geçmiş oluyorum smile

Çevrimdışı

#6 29.01.2019 22:36:24

ysf
Üye
Kayıtlı: 06.02.2017
Mesajlar: 39

Yanıt: İki Sorguyu Karşılaştırma

@mgsmus Ellerin dert görmesin üstad, bilgi paylaştıkça çoğalır.

Çevrimdışı

Forum alt kısmı