Laravel 'WHERE' 查询中断中的函数 API?
Laravel 'WHERE' function in query breaks API?
我正在尝试使用 DHTMLX 甘特图制作甘特图 API。
目标是只向特定用户显示特定的甘特图。因此,例如:如果我打开一份合同,它会向我显示该合同的甘特图,但如果我有 ex: purchases 的许可,那么它应该只向我显示具有特定 权限 ID[=39= 的行] 在 DB table Task.
现在问题出在这个函数的某个地方:
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()
]);
}
'relation_id' 工作正常并且只显示一个项目,但是当我尝试添加另一个 WHERE 时它只是中断而没有错误并且没有加载图表信息。
我认为它必须对 JSON 做一些事情,就好像我只是在任何其他页面上发送这个查询而不插入 GANTT(就像 JSON)它向我显示了正确的信息.
所以基本上我需要使该查询与此 API 一起工作,我不知道为什么 1 行额外的语句会破坏它。
我也试过这样的WHERE语句:
"data" => $tasks->where([['relation_id', '=', $id],['permission','=',2]])->get()
这是甘特图的link:link
我按照他们文档中的步骤开始:link
您好,您正在实例化对象并尝试访问静态方法,因此失败了
试试这个
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()
]);
}
尝试使用参数分组,解释如下:https://laravel.com/docs/master/queries#parameter-grouping。所以它看起来像:
$tasks->where(function($query) {
$query->where(‘relation_id’, $id)
->where(‘permission’, 2);
})->get();
您也不需要包含“=”,因为如果您将其省略,Laravel 会在 where 语句中理解它(只有其他二元运算才需要)。
所以我说了这么多,但是为什么要创建一个新任务然后用 where 语句过滤它呢?您应该获得所有任务并以这种方式过滤它们。例如:
$tasks = Task::where(...)->get();
$links = Link::get();
return response()->json([‘tasks’ => $tasks, ‘links’ => $links]);
这更容易,应该会给您想要的结果。希望这对您有所帮助!
您没有创建新任务,因此请停止使用 new,您需要使用 query()
$tasks = Task::query();
$links = Link::query();
$tasks->where(['relation_id' => $id, 'permission' => 2])->get();
我正在尝试使用 DHTMLX 甘特图制作甘特图 API。
目标是只向特定用户显示特定的甘特图。因此,例如:如果我打开一份合同,它会向我显示该合同的甘特图,但如果我有 ex: purchases 的许可,那么它应该只向我显示具有特定 权限 ID[=39= 的行] 在 DB table Task.
现在问题出在这个函数的某个地方:
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()
]);
}
'relation_id' 工作正常并且只显示一个项目,但是当我尝试添加另一个 WHERE 时它只是中断而没有错误并且没有加载图表信息。
我认为它必须对 JSON 做一些事情,就好像我只是在任何其他页面上发送这个查询而不插入 GANTT(就像 JSON)它向我显示了正确的信息.
所以基本上我需要使该查询与此 API 一起工作,我不知道为什么 1 行额外的语句会破坏它。
我也试过这样的WHERE语句:
"data" => $tasks->where([['relation_id', '=', $id],['permission','=',2]])->get()
这是甘特图的link:link
我按照他们文档中的步骤开始:link
您好,您正在实例化对象并尝试访问静态方法,因此失败了
试试这个
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()
]);
}
尝试使用参数分组,解释如下:https://laravel.com/docs/master/queries#parameter-grouping。所以它看起来像:
$tasks->where(function($query) {
$query->where(‘relation_id’, $id)
->where(‘permission’, 2);
})->get();
您也不需要包含“=”,因为如果您将其省略,Laravel 会在 where 语句中理解它(只有其他二元运算才需要)。
所以我说了这么多,但是为什么要创建一个新任务然后用 where 语句过滤它呢?您应该获得所有任务并以这种方式过滤它们。例如:
$tasks = Task::where(...)->get();
$links = Link::get();
return response()->json([‘tasks’ => $tasks, ‘links’ => $links]);
这更容易,应该会给您想要的结果。希望这对您有所帮助!
您没有创建新任务,因此请停止使用 new,您需要使用 query()
$tasks = Task::query();
$links = Link::query();
$tasks->where(['relation_id' => $id, 'permission' => 2])->get();