+--------------------------+---------------+----------------------+
| 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
{
}