【问题标题】:Eloquent not selecting date attributes when using where clause使用where子句时雄辩不选择日期属性
【发布时间】:2017-05-17 21:16:42
【问题描述】:

我的 Eloquent 查询遇到了这个奇怪的问题。

我的模型看起来像这样:

class MyModel extends Model {
    // ...
    $protected $dates = [
    "some_date",
    ]
}

当使用这样的查询时:

$myModel = MyModel::find(1);
echo $myModel->toJson();

我得到这个输出:

{
    "id" : 1
    "some_date" : "../../../"
}

但是当我使用这个查询时:

$myModel = MyModel::where('id', '=', 1)->get();
echo $myModel->toJson();

我得到这个奇怪的输出:

{
    "id" : 1
}

where 子句没有选择日期属性!为什么会这样?

【问题讨论】:

  • 您的日期列的数据类型是否正确?
  • 模型上的$hidden$visible 数组有哪些列?
  • 我没有在我的模型中使用任何 $visible 或 $hidden 属性。
  • 看起来 BaseModel 包含与我正在使用的属性匹配的隐藏属性。现在它起作用了。您可以将您的评论作为答案发布,以便我对其进行验证。
  • 试试这个:$myModels = MyModel::where('id', '=', 1)->get(); foreach($myModels as $myModel) { echo $myModel->toJson(); }

标签: laravel eloquent


【解决方案1】:

以下两种方法之一:

如果模型上定义了$hidden 数组,请确保它不包含此列。

--或--

如果没有$hidden 数组,请确保没有$visible 数组,如果定义了$visible 数组,请确保您想要的列在其中。

Laravel 删除序列化为 json 时隐藏或不可见的列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    • 2018-05-19
    • 2022-01-07
    • 1970-01-01
    相关资源
    最近更新 更多