Laravel 5 |一对多关系查询错误

时间:2015-03-23 05:20:33

标签: php laravel laravel-4 laravel-5

我在Jobs Model和Permits模型之间创建了一对多的关系。我最近发现了Tinker的强大工具,所以我一直用它来测试我的模型。当我运行Job::with('steps')->find(1);时,我收到此错误

Illuminate\Database\QueryException with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'steps.job_id' in 'where clause' (SQL: select * from `steps` where `steps`.`job_id` in (1))'

这是工作模式

   public function steps ()
    {
        return $this->hasMany('MyfirstApp\Step');
    }

这是我的步骤模型

   public function Job ()
    {
      return $this->belongsTo('MyFirstApp\Job');
    }

我已经在Jobs Table中设置了foregin密钥,所以我不确定错误是什么。有什么想法吗?

表格结构供参考 enter image description here

2 个答案:

答案 0 :(得分:1)

对于您的关系,Job有许多Steps,您分配了错误的外键。

在您的情况下,steps表应包含job_id而不是job包含steps_id

<强>解决方案:

  • steps_id表格中删除job
  • job_id表中的steps设置为外键。

答案 1 :(得分:1)

试试吧

你在模特身上设置了错误的关系

工作模式

public function steps ()
    {
        return $this->belongsTo('MyfirstApp\Step');
    }

步骤模型

public function Job ()
    {
      return $this->hasMany('MyFirstApp\Job');
    }