【发布时间】:2014-04-20 13:17:24
【问题描述】:
您好,我正在尝试查询我的任务表。一些关于表格的背景信息以及它们之间的关系。
用户,创建项目和任务,项目和任务的状态可以从状态表中选择,用户自己创建,我计划有默认的,但用户可能想要创建自己的。
默认情况下,我想查找 statuses 表 does not equal 中的 status_name 关闭的所有用户任务。我决定最好实际创建一个名为task_status 的表,其中包含task_id 和status_id。我还是想找到登录用户的任务,然后根据tasks表中保存的status_id找到状态名称,可以在statuses表中引用。然后我只想显示不等于 closed 的任何记录,但下面解释的第一部分比最初预期的要复杂。
我的表结构如下:
表结构
用户
id | username | email
任务
id | user_id | client_id | project_id | status_id | task_name | task_brief
状态
id | status_name
项目
id | user_id | client_id | status_id | type_id | project_name | project_brief
task_status
id | user_id | task_id | status_id
我试图首先简单地查询我的数据库,以便我可以确定返回的数据是正确的。因此,我将查询更改为以下内容:
$user = User::with(array('tasks', 'task.status', 'tasks.taskstatus',
'tasks.clients'))->find(Auth::user()->id);
我正在尝试返回如下(请记住,我还想查询状态表,以便能够返回状态名称):
@foreach($user->tasks as $task)
{{ $task->task_name }}
@if(!is_null($task->clients))
{{ $task->clients->client_code }}
@endif
@if(!is_null($task->taskstatus))
{{ $task->taskstatus->status_name }}
@endif
@endforeach
我的模型:
任务.php
public function status(){
return $this->hasOne('Status', 'status_id');
}
public function taskstatus() {
return $this->hasMany('TaskStatus', 'status_id');
}
状态.php
public function tasks()
{
return $this->hasMany('Task');
}
public function taskstatus()
{
return $this->hasMany('TaskStatus', 'status_id');
}
任务状态.php
public function tasks()
{
return $this->hasMany('Task', 'task_id');
}
public function status() {
return $this->belongsTo('Status', 'status_id')
}
但是使用上述返回以下错误:
SQLSTATE[42S02]: Base table or view not found: 1146 Table
'imanage.task_statuses' doesn't exist (SQL: select * from `task_statuses`
where `task_statuses`.`status_id` in (?, ?, ?, ?, ?, ?, ?))
(Bindings: array ( 0 => 1, 1 => 2, 2 => 3, 3 => 4, 4 => 5, 5 => 6, 6 => 7, ))
我确定是我的关系定义不正确,但我不知道如何更正这些。有人可以帮忙吗?
【问题讨论】:
标签: php mysql laravel eloquent