Search code examples
phplaravelapidhtmlxgantt-chart

Laravel 'WHERE' function in query breaks API?


I'm trying to make Gantt's chart using DHTMLX Gantt API.

The goal is to show only certain Gantt's lines to certain users. So for example: if I open a contract it shows me the Gantt's chart of that contract, but if I have permission for ex: purchases, then it should only show me the line with certain permission ID which is in the DB table Task.

Now the problem is somewhere around this function:

    public function getOne($id){
      $tasks = new Task();
      $links = new Link();

      return response()->json([
          "data" => $tasks->where('relation_id', $id)->where('permission', 2)->get(),
          "links" => $links->all()
      ]);
    }

The 'relation_id' works fine and shows only a single project, but when I try to add another WHERE it just breaks without errors and doesn't load the chart information.

I think it has to do something with the JSON as if I do just send this query on any other page without inserting into GANTT (just as JSON) it shows me the correct information.

So basically I need to make that query work with this API, I have no clue about why 1 extra line of statement would break it.

I also tried the WHERE statement like this:

"data" => $tasks->where([['relation_id', '=', $id],['permission','=',2]])->get()

Here is the link to the Gantt chart: link

I followed the steps in their documentation to start: link


Solution

  • Hi your instantiating an object and trying to access a static method hence, its failing

    try this

    public function getOne($id){
      $tasks = Task::query();
      $links = Link::query();
    
      return response()->json([
          "data" => $tasks->where('relation_id', $id)->where('permission', 2)->get(),
          "links" => $links->get()
      ]);
    }