Как вернуть все модели в отношения BelongsToMany

У меня есть отношения на User модель, как показано ниже:

public function brands() {
$roles = config('constants.roles');

if ($this->hasRole($roles['brand_site_admin'])) {
return $this->belongsToMany(Brand::class, 'brand_has_users');
} else
if ($this->hasRole($roles['client_admin'])) {
return $this->belongsToMany(Brand::class, 'brand_has_client_admin');
}

// For admin role I want to return all brands, from Brand Model
// ??
}

Для роли администратора я хочу вернуть все строки из Brand модель, как я могу получить это?
И это должно быть примером BelongsToMany класс, тогда только это не будет нарушать код в моем контроллере.

Обновить:

Когда я делаю $user->brands() Я хочу, чтобы все бренды из brands таблица, если $user является администратором (в приведенном выше коде, если он не работает ни при каких условиях, то это администратор).

0

Решение

Я думаю, что вы должны попробовать это, как предложено в этот ТАК пост, сначала создайте такие отношения

    $roles = config('constants.roles');
public function siteAdminBrands()
{
return $this->hasMany(Brand::class, 'brand_has_users');
}

public function clientAdminBrands()
{
return $this->hasMany(Brand::class, 'brand_has_client_admin');
}

public function brands($query)
{
return $query
->when($this->hasRole($roles['brand_site_admin']),function($q){
return $q->with('siteAdminBrands');
})
->when($this->hasRole($roles['client_admin']),function($q){
return $q->with('clientAdminBrands');
});

}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector