0

Here is my data table query funciton.


    /**
     * @param ProjectTimeLog $model
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function query(ProjectDailyStandup $model)
    {
        $request = $this->request();

        $projectId = $request->projectId;
        $employee = $request->employee;
        $taskId = $request->taskId;
        $approved = $request->approved;
        $invoice = $request->invoice;

        $model = $model->with('user', 'user.employeeDetail', 'user.employeeDetail.designation', 'user.session', 'project', 'task');

        $model = $model->join('users', 'users.id', '=', 'project_time_logs.user_id')
            ->join('employee_details', 'users.id', '=', 'employee_details.user_id')
            ->leftJoin('designations', 'employee_details.designation_id', '=', 'designations.id')
            ->leftJoin('tasks', 'tasks.id', '=', 'project_time_logs.task_id')
            ->leftJoin('projects', 'projects.id', '=', 'project_time_logs.project_id');

        $model = $model->select('project_time_logs.id','project_time_logs.project_id','project_time_logs.start_time', 'project_time_logs.end_time', 'project_time_logs.total_hours', 'project_time_logs.total_minutes', 'project_time_logs.memo', 'project_time_logs.user_id', 'project_time_logs.project_id', 'project_time_logs.task_id', 'users.name', 'users.image', 'project_time_logs.hourly_rate', 'project_time_logs.earnings', 'project_time_logs.approved', 'tasks.heading','tasks.due_date', 'projects.project_name', 'designations.name as designation_name', 'project_time_logs.added_by','project_time_logs.flag as flagId');


        if ($request->startDate !== null && $request->startDate != 'null' && $request->startDate != '') {
            $startDate = Carbon::createFromFormat($this->global->date_format, $request->startDate)->toDateString();

            if (!is_null($startDate)) {
                $model->where(DB::raw('DATE(project_time_logs.`start_time`)'), '>=', $startDate);
            }
        }

        if ($request->endDate !== null && $request->endDate != 'null' && $request->endDate != '') {
            $endDate = Carbon::createFromFormat($this->global->date_format, $request->endDate)->toDateString();

            if (!is_null($endDate)) {
                $model->where(function ($query) use ($endDate) {
                    $query->where(DB::raw('DATE(project_time_logs.`end_time`)'), '<=', $endDate);
                });
            }
        }

        if (!is_null($employee) && $employee !== 'all') {
            $model->where('project_time_logs.user_id', $employee);
        }

        if (!is_null($projectId) && $projectId !== 'all') {
            $model->where('project_time_logs.project_id', '=', $projectId);
        }

        if (!is_null($taskId) && $taskId !== 'all') {
            $model->where('project_time_logs.task_id', '=', $taskId);
        }

        if (!is_null($approved) && $approved !== 'all') {
            if ($approved == 2) {
                $model->whereNull('project_time_logs.end_time');
            }
            else {
                $model->where('project_time_logs.approved', '=', $approved);
            }
        }

        if (!is_null($invoice) && $invoice !== 'all') {
            if ($invoice == 0) {
                $model->whereNull('project_time_logs.invoice_id');
            }
            else if ($invoice == 1) {
                $model->whereNotNull('project_time_logs.invoice_id');
            }
        }

        if ($request->searchText != '') {
            $model->where(function ($query) {
                $query->where('tasks.heading', 'like', '%' . request('searchText') . '%')
                    ->orWhere('project_time_logs.memo', 'like', '%' . request('searchText') . '%')
                    ->orWhere('projects.project_name', 'like', '%' . request('searchText') . '%');
            });
        };

        if ($this->viewTimelogPermission == 'added') {
            $model->where('project_time_logs.added_by', user()->id);
        }

        if ($this->viewTimelogPermission == 'owned') {
            $model->where(function ($q) {
                $q->where('project_time_logs.user_id', '=', user()->id);

                if (in_array('client', user_roles())) {
                    $q->orWhere('projects.client_id', '=', user()->id);
                }
            });
        }

        if ($this->viewTimelogPermission == 'both') {
            $model->where(function ($q) {
                $q->where('project_time_logs.user_id', '=', user()->id);

                $q->orWhere('project_time_logs.added_by', '=', user()->id);

                if (in_array('client', user_roles())) {
                    $q->orWhere('projects.client_id', '=', user()->id);
                }
            });
        }


        return $model;
    }

It is giving me this error

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'project_time_logs.user_id' in 'on clause' (SQL: select count(*) as aggregate from `project_daily_standups` inner join `users` on `users`.`id` = `project_time_logs`.`user_id` inner join `employee_details` on `users`.`id` = `employee_details`.`user_id` left join `designations` on `employee_details`.`designation_id` = `designations`.`id` left join `project_time_logs` on `project_time_logs`.`user_id` = `users`.`id` left join `tasks` on `tasks`.`id` = `project_time_logs`.`task_id` left join `projects` on `projects`.`id` = `project_time_logs`.`project_id`)

Please help

I was expecting a working data table

  • Does this answer your question? [Laravel : SQLSTATE\[42S22\]: Column not found: 1054 Unknown column](https://stackoverflow.com/questions/40600550/laravel-sqlstate42s22-column-not-found-1054-unknown-column) – Abdulla Nilam Dec 20 '22 at 05:43
  • First focus on the non-working sql query, by looking at Abdulla's proposed link. When your SQL works, you'll get a working datatable – UnderDog Dec 20 '22 at 05:46
  • Please share your migrations class here, it's saying you don't have 'user_id' in 'project_time_logs' table and do you run PHP artisan migrate? –  Dec 20 '22 at 09:29
  • This question is duplicate. – cengsemihsahin Jan 01 '23 at 22:27

1 Answers1

0

I figured out that I was referring to the wrong model in the query function so I solved it by importing the right model.

public function query(ProjectTimeLogs $model)

Thank you!