【发布时间】:2020-05-22 00:11:37
【问题描述】:
目前我的数据库中有这 2 个不同的 views。
第一个是view_project_percentage,其中列出了所有项目及其详细信息
和view_projtask 每个特定项目的任务列表
view_project_percentage
view_projtask
我有这个工作代码
我的模特
Project.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Project extends Model
{
protected $table = "view_project_percentage";
public function tasks()
{
return $this->hasMany(ProjectTask::class, 'projCode', 'proj_code')
->where('deleted',0);
}
}
和
ProjectTask.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ProjectTask extends Model
{
protected $table = "view_projtask";
public function project()
{
return $this->belongsTo(Project::class, 'proj_code', 'projCode')
->where('deleted',0)
->where('taskDeleted',0);
}
}
在我的Controller 我有这个
public function get_all_projtask()
{
return response()->json(Project::with('tasks')->get());
}
我从上面的代码中得到了所有项目列表和这个响应
[
{
"id": 9,
"proj_code": "ZQQKVOTRJJNZ",
"proj_title": "P12",
"proj_desc": "Project Description 12",
"target_man_days": 1000000,
"issue": 0,
"report": 1,
"total_employee": 3,
"hours_8": "4",
"hours_6": "1.0",
"hours_3": "0",
"total_weight_progress": "5.00",
"est_start_date": "2020-01-20 09:42:00",
"est_end_date": "2020-01-20 21:42:00",
"act_start_date": "2020-01-20 09:42:00",
"act_end_date": "2020-01-20 21:42:00",
"longitude": "121.07642460",
"latitude": "14.56055010",
"location": "Pasig, Metro Manila, Philippinae",
"status": null,
"deleted": 0,
"by_id": 7,
"updated_by": "Keigh Dee",
"created_at": "2020-01-20 09:42:31",
"updated_at": "2020-01-22 14:01:08",
"tasks": [
{
"id": 40,
"projCode": "ZQQKVOTRJJNZ",
"taskCode": "OKIX19IR1DST",
"total_task_weight": null,
"taskWeight": "25.00",
"plan_days": "5",
"actual_days": "5",
"task_title": "Task 1",
"task_desc": "Description 1",
"taskDeleted": 0,
"deleted": 0,
"by_id": 79,
"updated_by": "Super Admin",
"created_at": "2020-01-22 14:01:08",
"updated_at": "2020-01-22 14:01:08"
},
{
"id": 41,
"projCode": "ZQQKVOTRJJNZ",
"taskCode": "FZPRFIWOKBFQ",
"total_task_weight": "5.00",
"taskWeight": "25.00",
"plan_days": "5",
"actual_days": "5",
"task_title": "Task 2",
"task_desc": "Description 2",
"taskDeleted": 0,
"deleted": 0,
"by_id": 79,
"updated_by": "Super Admin",
"created_at": "2020-01-22 14:01:08",
"updated_at": "2020-01-22 14:01:09"
},
{
"id": 39,
"projCode": "ZQQKVOTRJJNZ",
"taskCode": "J5X1FHCMVFSQ",
"total_task_weight": null,
"taskWeight": "50.00",
"plan_days": "5",
"actual_days": "5",
"task_title": "Task 5",
"task_desc": "Description 5",
"taskDeleted": 0,
"deleted": 0,
"by_id": 79,
"updated_by": "Super Admin",
"created_at": "2020-01-22 14:01:08",
"updated_at": "2020-01-22 14:01:08"
}
]
},
........and projects more....
我要做的是根据当前auth()->user()->company_id 过滤这些项目以过滤它们。我有一张名为tbl_emp_proj 的表,其中所有projCode 与emp_id 一起列出,这意味着每个用户都包含多个或单个项目。
这是我的桌子
如果项目是为使用此auth()->user()->company_id = emp_id 的用户提供的,我只想显示来自tbl_emp_proj 的记录是deleted = 0 的响应
emp_id 来自tbl_emp_proj
【问题讨论】:
-
不确定我是否误解了您的要求,但您不能添加 where('emp_id', auth()->user()->company_id) 或其他内容吗?
-
Project.php的模型是view_project_percentage和ProjectTask.php是view_projtask我不认为我可以这样做,因为与tbl_emp_proj没有任何联系,因为emp_id是位于那张桌子上 -
您应该在 emp_id(无论它属于什么模型)和项目模型之间添加一对多的关系。然后,您可以在调用中添加 whereHas() 过滤器。
-
你能给我举个例子吗?我对这个框架还是很陌生,仍然采用编码风格。
-
user 和 tbl_emp_proj 是如何连接的?