Как запросить отношение поворота в laravel?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как запросить отношение поворота в laravel?

Сообщение Anonymous »

Возможно, это немного странно: в условиях быстрого роста бизнеса некоторые связи между таблицами теперь требуют процесса проверки/утверждения. Однако в начале проекта мы не зарезервировали специальное поле статуса проверки в соответствующих таблицах. Теперь, поскольку большая часть контента требует проверки, мы решили добавить новую таблицу отзывов и использовать полиморфные отношения Eloquent (morph), чтобы связать его с моделями, требующими проверки. Мы также создали признак Reviewable, который быстро и эффективно реализовал основное требование.
Однако возникла проблема: я не уверен, как правильно запрашивать промежуточную таблицу/таблицу соединений на основе статуса проверки.
Например, у нас есть таблицы пользователей и ролей, которые связаны промежуточной таблицей user_role_assigns.
Акт создания ссылки (само задание) требует проверки и должен быть невидим для других до тех пор, пока он не будет одобрен. Таблица user_role_assigns имеет отношение morph к таблице обзоров через признак Reviewable. Мой вопрос: как я могу написать запрос для получения, например, ролей пользователя, но только включать те роли, для которых была одобрена соответствующая запись назначения в user_role_assigns?
В настоящее время мой код выглядит так:
User::query()
->whereHas('roles', function (Builder $query) use ($isQueryCurrentUser) {
if ($isQueryCurrentUser) {
// this ok
$query->with([
'assigns' => function (Builder $query) {
$query->with(['review']);
},
]);
} else {
// problem in here, assigns includes all assigns
// so if someone assigned, will be included in result, show to others, this is wrong
// but in query can't access attributes, don't know how to filter for current user list
$query->whereHas('assigns', function (Builder $query) {
$query->whereHas('review', function (Builder $query) {
$query->where('status', 'approved');
});
});
}
})
->get();


Подробнее здесь: https://stackoverflow.com/questions/798 ... in-laravel
Ответить

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

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

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

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

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