Синтаксическая ошибка или нарушение прав доступа: 1055 'laravelapp.ltd.no_of_days' не входит в GROUP BY в Laravel - PullRequest
0 голосов
/ 04 августа 2020

В моем проекте Laravel -5.8 я разрабатываю заявление об отпуске сотрудника. В приложении в конкретный год каждый сотрудник может подать заявление на разные отпуска. когда сотрудник входит в систему, я хочу отобразить таблицу, как показано ниже, в которой показан баланс каждого типа отпуска, имя вошедшего в систему пользователя

У меня есть 3 применимые таблицы

class HrLeaveType extends Model
{
   protected $table = hr_'leave_types';

   protected $fillable = [
              'id',
              'leave_type_name',
          ];

   public function leavetypedetail()
   {
       return $this->hasMany('App\Models\LeaveTypeDetail');
   }  
}

class HrLeaveTypeDetail extends Model
{
   protected $table = 'hr_leave_type_details';
   protected $fillable = [
              'id',
              'leave_type_id',
              'employment_type_id',
              'no_of_days',
          ];

   public function leavetype()
   {
       return $this->belongsTo('App\Models\HrLeaveType', 'leave_type_id', 'id');
   }

   public function employeetype()
   {
       return $this->belongsTo('App\Models\HrEmployeeType', 'employee_type_id', 'id' );
   }    
}

class HrLeaveRequest extends Model
{
   protected $table = 'hr_leave_requests';
   protected $fillable = [
              'id',
              'employee_id',
              'leave_type_id',
              'leave_status',
              'no_of_days',
          ];


   public function employee()
   {
       return $this->belongsTo('App\Models\HrEmployee','employee_id');
   }    

   public function leavetype()
   {
       return $this->belongsTo('App\Models\HrLeaveType','leave_category_id');
   }
}

Как было сказано ранее, ожидаемый результат должен иметь 4 столбца (Категория выхода, Допустимый отпуск, Утвержденный отпуск, Доступен) *

Я хочу добиться такого результата

оставить баланс

Когда я пытался запустить контроллер, я получил эту ошибку:

# сообщение: «SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1055 'laravelapp. ltd.no_of_days 'отсутствует в GROUP BY (SQL: выберите lt. leave_type_name as leaveCategory, `l ▶"

Я не могу группировать по' no_of_days '

Я хочу группировать только по leave_type_name и employee_id (e.id)

Как решить эту проблему?

Спасибо

1 Ответ

0 голосов
/ 04 августа 2020

Это больше касается базы данных, а не laravel. Вы можете select столбцы, указанные в предложении group by, и вы можете использовать с ним любые агрегатные функции.

Таким образом, один из вариантов - изменить ваш запрос с помощью требуемого столбца

->groupBy('lt.leave_type_name', 'e.id', 'ltd.no_of_days')

Вероятно, вам также придется настроить предложение IF для выбора, так как этот столбец не входит в group by

Полная группа по поддерживается в mysql 5.7, но по умолчанию отключена .

Как можно исправить всю группу по проблемам

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