php模型不包含任何内容,一个空模型
class usertask extends basemodel_
< /代码>
迁移
类CreateTaskStable扩展迁移
{
受保护的$table='任务';
受保护的$app_table=true;
公共功能向上()
{
架构::创建($this->gettable(),函数(蓝图$table){
$table->增量(“id”);
$table->字符串(“title”);
$table->日期时间(“提交日期”);
$table->datetime('closed_date')->nullable();
$table->datetime(“到期日”)->nullable();
$table->tinyinteger('is done')->nullable()->默认值(0);
$table->integer('domain_id')->unsigned()->nullable();
$table->foreign('domain_id')->references('id')
->打开(self::gettablename('domains'))->OnDelete('cascade');
$table->biginteger('created_by')->unsigned()->nullable();
$table->foreign('created_by')->引用('id')
->打开(self::gettablename('auth_users',false))->OnDelete('cascade');
$table->biginteger('closed_by')->unsigned()->nullable();
$table->foreign('closed_by')->引用('id')
->打开(self::gettablename('auth_users',false))->OnDelete('cascade');
$table->时间戳();
(});
}
公共功能下降()
{
架构::删除($this->gettable());
}
}
< /代码>
和
类CreateTaskUserStable扩展迁移
{
受保护$table='任务用户';
受保护的$app_table=true;
公共功能向上()
{
架构::创建($this->gettable(),函数(蓝图$table){
$table->增量(“id”);
$table->integer('task_id')->unsigned()->nullable();
$table->foreign('task_id')->references('id')
->打开(self::gettablename(“tasks”))
->OnDelete(“层叠”);
$table->biginteger('user_id')->unsigned()->nullable();
$table->foreign('user_id')->references('id')
->打开(self::gettablename('auth_users',false))。
->OnDelete(“层叠”);
$table->integer('role');
(});
}
公共功能下降()
{
架构::删除($this->gettable());
}
}
< /代码>
实际表分别

和

<我的代码:
助手在下面
public static function getarchived($domainid,$userid)
{
任务::其中(“域\id”,$domain id)
->何处(“完成”,1)
->其中(“关闭日期”,“<”,carbon::today()->startofday())
->其中(函数($query)使用($userid){
$query->wherehas('taskUsers',函数($query)使用($userid){
$query->其中('user_id',$user id);
(});
})
->或在何处(函数($query)使用($userid){
$query->其中(“创建人”,$userid);
})
-Gt();
}
< /代码>
动作:
公共函数execute()
{
$domain id=$this->请求->获取(“域\u id”);
$userid=\auth::id();
$tasks=taskshelper::getarchived($domainid,$userid);
返回$this->响应->状态OK(['tasks'=>$tasks]);
}
< /代码>
我只得到一个状态OK,没有结果,tasks数组是空的,尽管我的代码似乎是正确的,表中包含1条应该返回的记录。[答:]
昨天或以前完成的任务,不包括今天完成的任务
用户只能查看他创建或分配的存档任务
如果将用户分配给任务,则其ID将存储在数据透视中。
桌子
由于问题范围之外的原因,我只能使用下面task.php中所示的透视表来访问用户。
PHP模型
public function taskUsers()
{
return $this->hasMany('App\Models\Tasks\UserTask')->where('role',1);
}
php模型不包含任何内容,一个空模型
class UserTask extends BaseModel { }
迁徙
class CreateTasksTable extends Migration
{
protected $table = 'tasks';
protected $app_table = true;
public function up()
{
Schema::create($this->getTable(), function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->dateTime('submit_date');
$table->dateTime('closed_date')->nullable();
$table->dateTime('due_date')->nullable();
$table->tinyInteger('is_done')->nullable()->default(0);
$table->integer('domain_id')->unsigned()->nullable();
$table->foreign('domain_id')->references('id')
->on(self::getTableName('domains'))->onDelete('cascade');
$table->bigInteger('created_by')->unsigned()->nullable();
$table->foreign('created_by')->references('id')
->on(self::getTableName('auth_users', false))->onDelete('cascade');
$table->bigInteger('closed_by')->unsigned()->nullable();
$table->foreign('closed_by')->references('id')
->on(self::getTableName('auth_users', false))->onDelete('cascade');
$table->timestamps();
});
}
public function down()
{
Schema::drop($this->getTable());
}
}
和
class CreateTaskUsersTable extends Migration
{
protected $table = 'task_user';
protected $app_table = true;
public function up()
{
Schema::create($this->getTable(), function (Blueprint $table) {
$table->increments('id');
$table->integer('task_id')->unsigned()->nullable();
$table->foreign('task_id')->references('id')
->on(self::getTableName('tasks'))
->onDelete('cascade');
$table->bigInteger('user_id')->unsigned()->nullable();
$table->foreign('user_id')->references('id')
->on(self::getTableName('auth_users', false))
->onDelete('cascade');
$table->integer('role');
});
}
public function down()
{
Schema::drop($this->getTable());
}
}
实际表分别

和

我的代码:
助手在下面
public static function getArchived($domainId, $userId)
{
Task::where("domain_id", $domainId)
->where("is_done", 1)
->where("closed_date", '<', Carbon::today()->startOfDay())
->where(function ($query) use ($userId) {
$query->whereHas('taskUsers', function ($query) use ($userId) {
$query->where('user_id', $userId);
});
})
->orWhere(function ($query) use ($userId) {
$query->where('created_by', $userId);
})
->get();
}
行动:
public function execute()
{
$domainId = $this->request->get('domain_id');
$userId = \Auth::id();
$tasks = TasksHelper::getArchived($domainId,$userId);
return $this->response->statusOk(['tasks' => $tasks]);
}
我只得到一个状态OK,没有结果,tasks数组是空的,尽管我的代码似乎是正确的,表中包含1条应该返回的记录。