【问题标题】:Laravel eloquent not retrieving results based on boolean columnLaravel 雄辩不基于布尔列检索结果
【发布时间】:2020-09-04 22:27:21
【问题描述】:

我的数据库中有 33 个结果,其中这个布尔字段 (resolvido) 显示为零,如果我运行 SQL 查询,它会检索结果,但是在模型中,集合总是为空。

如果我更改为Model::where('resolvido',1)->get(),我会得到相应的结果,但是Model::where('resolvido',0)->get()Model::where('resolvido',false)->get() 甚至使用查询生成器和原始sql,集合永远不会选择resolvido = 0 的那33 个结果.

我也试过 Tinker,但总是空着。

迁移:

        $table->boolean('resolvido')->nullable();   

在 DB 上显示为 TINYINT

关于它可能是什么的任何提示?

提前致谢

【问题讨论】:

  • 这个栏目叫resolved还是resolvido只是为了说明清楚。
  • 谢谢,我只是举个例子,但现在已经编辑了问题以反映真实的字段名称“resolvido”

标签: laravel collections eloquent boolean


【解决方案1】:

试试这个

Model::where('resolved', null)->get()

Model::where('resolved', '')->get()

【讨论】:

    【解决方案2】:

    当然,有no boolean data type for MySQL,但为此使用TINYINT(0 或1)。

    Laravel 的查询构建器允许在 where 子句中使用布尔值。你可能想试试这些:

    Model::where('resolved', true)->get();
    Model::where('resolved', false)->get();
    

    由于您已将数据库中的resolved 列设置为nullable,您可能还想尝试一下:

    Model::where('resolved', null)->get();
    

    如果您不希望这种行为,请改用$table->boolean('resolved')->default(false)

    【讨论】:

    • 抱歉格式错误,尝试了双倍空格,但仍然没有换行。习惯了这个。诶
    • 使用TRUEFALSE 的行为也相同,Ocorrencia::where('resolvido', true)->get() 返回大量数据,Ocorrencia::where('resolvido', false)->get() 不返回任何内容。
    猜你喜欢
    • 1970-01-01
    • 2017-03-05
    • 1970-01-01
    • 1970-01-01
    • 2016-06-09
    • 2023-04-03
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多