Laravel Выбор одного столбца в базе данных условно - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть 2 столбца в одной из моих таблиц.

| mark_1 | mark_2 |

Эти отметки сохраняются для 2 типов пользователей в системе.

  • mark_1 для user_type_1
  • mark_2 для user_type_2

При извлечении из этой таблицы мне нужно условно получить указанный c отметка столбца (mark_1 или mark_2) как отметку для каждого типа пользователя. Как добиться этого с помощью Laravel eloquent модели.

Но нужно это в Eloquent, например, когда я запрашиваю Mark :: all (), мне нужно необходимое значение столбца mark.

if($userType == 'student_1'){
  $marks = DB::table('marks')
                   ->select('user_id', DB::raw('marks_1 as marks'));
} else {
  $marks = DB::table('marks')
                   ->select('user_id', DB::raw('marks_2 as marks'));
}

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

используйте оператор 'addSelect':

$query=User::query()->select('id');

if($userType == 'student_1')
$query=$query->addSelect('marks_1 as marks');
else
$query=$query->addSelect('marks_2 as marks');

$marks=$query->get();

подробнее о 'addSelect' здесь:

https://laravel.com/docs/7.x/eloquent#advanced -подзапросы

0 голосов
/ 20 апреля 2020

Вы можете использовать Accessors & Mutators , чтобы получить указанное значение столбца в зависимости от условия или добавить новый атрибут в вашу модель

проверить эту ссылку:

https://laravel.com/docs/7.x/eloquent-mutators#accessors и-мутаторов

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