Присоединение к Laravel Pivot через отношения HasonethroughMySql

Форум по Mysql
Ответить Пред. темаСлед. тема
Anonymous
 Присоединение к Laravel Pivot через отношения Hasonethrough

Сообщение Anonymous »

Я строю многопользовательскую систему на основе ролей в моем проекте Laravel 12. Пользователю получают роль в компании , он может иметь только одну роль в компании, но может назначить несколько компаний. Моя идеальная конечная настройка - иметь возможность запросить пользователя, с компанией, и, необязательно, и иметь некоторые результаты, которые выглядят так: < /p>
{
"email": "[email protected]",
"company": {
"id": 1,
"name": "Acme",
"pivot": {
"role_id"; 1,
"role": {
"role": "admin"
}
}
}
}
< /code>
или{
"email": "[email protected]",
"company": {
"id": 1,
"name": "Acme",
"role": {
"role": "admin"
}
}
}

У меня есть модель CompanyEntry , которая в настоящее время создает уникальные комбинации компании, пользователя и роли, она выглядит как:
Schema::create('company_entries', function (Blueprint $table) {
$table->id();

// must link to a user that logs in.
$table->foreignId('user_id')->index()->constrained()->cascadeOnUpdate()->cascadeOnDelete();
$table->foreignId('company_id')->index()->constrained()->cascadeOnUpdate()->cascadeOnDelete();
$table->foreignId('role_id')->index()->constrained()->cascadeOnUpdate()->cascadeOnDelete();

// booleans
$table->boolean('is_default')->default(0)->index();

// date/times
$table->timestamps();

// compound index
$table->index(['user_id', 'company_id']);
$table->index(['user_id', 'company_id', 'role_id']);

// create unique index
$table->unique([
'user_id',
'company_id',
'role_id'
], 'unique_user_company_index');
});

Как бы я достиг желаемого конечного результата, учитывая существующие отношения на моем пользователе модели:
/**
* Get the default company associated with the user
*/
public function company(): HasOneThrough
{
return $this->hasOneThrough(
Company::class,
CompanyEntry::class,
'user_id',
'id',
'id',
'company_id'
)->where('is_default', true)->orderBy('created_at', 'asc');
}


Подробнее здесь: https://stackoverflow.com/questions/795 ... lationship
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Присоединение к Laravel Pivot через отношения Hasonethrough
    Anonymous » » в форуме Php
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Ошибка: присоединение по pid 'xxxxx' не удалось - присоединение не удалось (не разрешено присоединение к процессу
    Anonymous » » в форуме IOS
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • Как определить метод Laravel hasOneThrough для этого сценария?
    Anonymous » » в форуме Php
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Laravel Eloquent Query Builder на Pivot
    Anonymous » » в форуме Php
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Удалить объект из запроса laravel obj['pivot']
    Anonymous » » в форуме Php
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous

Вернуться в «MySql»