SQLSTATE [42S22] :( SQL:从“类别”中选择*,其中“类别” .`departement_id` = 1并且“类别” .`departement_id`不为null)

时间:2019-05-17 01:56:54

标签: laravel-5 orm eloquent

我正在尝试选择特定部门的所有类别。

class Test extends Controller
{
    public  function test(){

        $depts=Departement::find(1)->categories;

        foreach ($depts as $dept){
            echo $dept->name;
        }

        return view('test');

    }

}

1 个答案:

答案 0 :(得分:0)

一个快速的Google搜索告诉我SQLSTATE [42S22]是“找不到列”的代码。 当您致电Departement::find(1)->categories时,口才是2次的查询

  1. 获取主键等于1的部门
  2. 获取其'departement_id'属性等于1的所有类别

给出错误查询

select * from `categories` where `categories`.`departement_id` = 1 and `categories`.`departement_id` is not null)

很显然,departement_id表中没有categories列。

如果您的类别表中没有departement_id列

要么:

  • 将其添加到迁移中。
  • 如果您不进行迁移,则将其直接添加到数据库中

如果要使另一列充当外键

更新您的关系方法以反映这一点。

https://laravel.com/docs/5.8/eloquent-relationships