Как запросить модели с тем, где условия на таблице поворота с использованием отношений для многих ко многим?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как запросить модели с тем, где условия на таблице поворота с использованием отношений для многих ко многим?

Сообщение Anonymous »

У меня есть две модели, пользователь и роль . Эти две модели имеют отношение к многим ко многим друг с другом с pivot table role_user . В этой таблице Pivot являются значения user_id , role_id и meta_value . Meta_value важен, потому что это внешний ключ (в базе данных, просто int) других моделей. Другая модель выбирается по ролям mate_type .
Миграция пользователя:
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
< /code>
Миграция ролей: < /h3>
Schema::create('roles', function (Blueprint $table) {
$table->id();
$table->timestamps();
$table->string('name');
$table->integer('meta_type')->nullable();
});
< /code>
миграция Role_user: < /h3>
Schema::create('role_user', function (Blueprint $table) {
$table->id();
$table->timestamps();
$table->foreignId('user_id')->constrained()->onDelete('cascade');
$table->foreignId('role_id')->constrained()->onDelete('cascade');
$table->integer('meta_value')->nullable();
});
< /code>
Эти значения мета используются, если роль зависит от других моделей. На практике, если у меня есть роль под названием «Член команды», роль будет иметь мета -тип команды (я использую цифры, чтобы определить это).
И теперь мне нужно как -то выбрать всех пользователей, которые имеют роль члена команды с конкретной командой (в Meta).
я попробовал:

.$user = User::with('roles')->where(column: 'meta_type', "=", "2")->wherePivot("meta_value", "=", $team_id)->get();
< /code>
$users = User::all()->with('roles')->where("pivot_meta_value", "=", $team_id)->get();
< /code>
$users = User::whereHas('roles', function($q) {
$q->whereIn('meta_value', 2);
})->get();
< /code>
And many more, but all without success.
Does anyone know how to do it?

Подробнее здесь: https://stackoverflow.com/questions/796 ... many-to-ma
Ответить

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

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

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

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

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