SQLSTATE[42S22]: (SQL: select * from `categories` where `categories`.`departement_id` = 1 and `categ

Posted

技术标签:

【中文标题】SQLSTATE[42S22]: (SQL: select * from `categories` where `categories`.`departement_id` = 1 and `categories`.`departement_id` is not null)【英文标题】: 【发布时间】:2019-05-17 01:56:53 【问题描述】:

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

class Test extends Controller

    public  function test()

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

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

        return view('test');

    


【问题讨论】:

编辑以提高可读性 错误是什么?为什么要回显数据然后返回视图?您是否将use App\Department; 添加到您的控制器?另外,您确定 ID 为 1 的部门存在吗? 是的部门 ID=1 存在并且使用 App\Department 存在错误是 SQLSTATE[42S22]: (SQL: select * from categories where categories.departement_id = 1 and categories .departement_id 不为空) 【参考方案1】:

快速的谷歌搜索告诉我 SQLSTATE[42S22] 是“未找到列”的代码。 当您拨打Departement::find(1)->categories 时,Eloquent 会进行 2 次查询

    获取主键等于1的部门 获取“departement_id”属性等于 1 的所有类别

鉴于您的错误中的查询

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

很明显,您的categories 表中没有departement_id 列。

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

要么:

在迁移中添加它。 如果您不使用迁移,请直接将其添加到数据库中

如果你想让另一列作为外键

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

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

【讨论】:

以上是关于SQLSTATE[42S22]: (SQL: select * from `categories` where `categories`.`departement_id` = 1 and `categ的主要内容,如果未能解决你的问题,请参考以下文章

SQLSTATE [42S22]:找不到列:1054 未知列 laravel 5.1

SQLSTATE[42S22]: (SQL: select * from `categories` where `categories`.`departement_id` = 1 and `categ

照亮\数据库\查询异常(42S22)SQLSTATE[42S22]

SQLSTATE [42S22]:找不到列:1054未知列material_tags.material_uuid

SQLSTATE [42S22]:找不到列:在 laravel livewire 项目中

Laravel 删除数据 - SQLSTATE [42S22]:找不到列:1054 未知列