Laravel 5 SQLSTATE[42S22]:(SQL:从'categories'中选择*,其中'categories`.'department\u id`=1和'categories`.'department\u id`不为空)

Laravel 5 SQLSTATE[42S22]:(SQL:从'categories'中选择*,其中'categories`.'department\u id`=1和'categories`.'department\u id`不为空),laravel-5,orm,eloquent,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'); } }

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

class Test extends Controller
{
    public  function test(){

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

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

        return view('test');

    }

}

快速的谷歌搜索告诉我SQLSTATE[42S22]是“Column not found”的代码。 当您调用
department::find(1)->categories
时,Eloquent会进行两次查询

  • 获取主键等于1的部门
  • 获取其“department_id”属性等于1的所有类别
  • 给出了你的错误查询

    从'categories'中选择*,其中'categories`.'department\u id`=1和'categories`.'department\u id`不为空)
    
    很明显,在您的
    类别
    表中没有
    部门id

    如果类别表中没有“部门id”列 要么:

    • 将其添加到迁移中
    • 如果不使用迁移,请直接将其添加到数据库中
    如果要将另一列用作外键 更新您的关系方法以反映这一点


    为了可读性更好地编辑错误是什么?为什么要回显数据,然后返回视图?您是否添加了
    使用App\Department到您的控制器?另外,您确定ID为1的部门存在吗?是的,部门ID=1存在并且使用App\Department exists错误为SQLSTATE[42S22]:(SQL:从
    类别中选择*,其中
    类别
    部门ID
    =1并且
    类别
    部门ID
    不为空)