Просмотр данных в соответствии с классом и группой классов - PullRequest
1 голос
/ 08 апреля 2020

У меня была админ-панель, где есть 3 типа пользователей: администратор, учитель и ученик. Теперь я хочу, чтобы, когда студент вошел в систему, он / она видит только данные, загруженные администратором

В соответствии с его / ее классом и группой классов, например class = 10th и group = computer science . Я понятия не имею, как я могу получить этот тип вещей. Я использовал следующий код

$paper = Paper::where('paper_type','PaperSolution' && 'class',Auth::user()->class)->get();

, это не работает должным образом, так как я сбрасываю данные

dd($paper);

это дает мне нулевое значение в качестве ответа.

Ответы [ 3 ]

1 голос
/ 08 апреля 2020

вы можете использовать больше гранулированных пород, переданных в виде массива:

$query->where([
    ['column_1', '=', 'value_1'],
    ['column_2', '<>', 'value_2'],
    [COLUMN, OPERATOR, VALUE],
    ...
])

Попробуйте это

$paper = Paper::where([['paper_type','PaperSolution'],['class', Auth::user()->class]])->get();
dd($paper);

ИЛИ

$paper = Paper::where([['paper_type','=','PaperSolution'],['class','=', Auth::user()->class]])->get();
dd($paper);

Ссылка на запрос с использованием массива

ReferenceLink

1 голос
/ 08 апреля 2020

Пожалуйста, обратитесь к Laravel документам коллекции для исправления синтаксиса.

$paper = Paper::where('paper_type','PaperSolution')
   ->where('class', Auth::user()->class)
   ->get();
0 голосов
/ 08 апреля 2020

Я не совсем понял структуру вашей БД, но сначала вам нужно иметь соответствующие столбцы, чтобы потом написать любой запрос. Ваш первый вариант - uploaded by admin, поэтому в вашей таблице загрузок (это модель бумаги, как я вижу из вашего текста) у вас должно быть что-то вроде uploader_role. Тогда у вас есть варианты student_class и student_group. Я хочу обратить ваше внимание на то, что эти 2 варианта users столбцы таблицы НЕ uploads (Бумага). Так что вам нужно проверить некоторые разрешения пользователей, а затем загружать документы администраторами. Вы можете сделать это с помощью промежуточного программного обеспечения или просто в вашем контроллере

$user = Auth::user();
if ($user->class == 10 && $user->group == 'computer_science') {
    $papers = Paper::where('uploader_role', 'admin')
    // you can add extra where options if that columns exist in papers table and you need to filter them also by class and group
    ->where( 'class_that_has_permissions', $user->class)
    ->where( 'group_that_has_permissions', $user->group)
    ->get();

    return $papers;
}

abort(404);

Также будьте осторожны со столбцами с именем class, которые могут возвращать реальное имя класса пользователя, например App\User, попробуйте использовать class_name или class_number.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...