【问题标题】:Eloquent not returning records when using SoftDeletes使用 SoftDeletes 时雄辩不返回记录
【发布时间】:2017-05-14 05:25:05
【问题描述】:

我遇到了一个奇怪的问题,我将我的应用程序上传到我的服务器进行实时测试。我可以保存数据,但是当我尝试使用 Eloquent 获取所有行时没有返回任何内容。但是在我的本地主机上它工作得很好。

我试过了:

$xtras = Extra::with('category')->paginate(10);

$xtras = Extra::with('category')->get();

$xtras = Extra::all();

但上述方法均无效,当我返回 $xtras 时,它始终是一个空数组。

所以我决定试试:

$xtras = DB::table('extras')->get();

这似乎工作得很好,它返回数据。我检查了我的模型,似乎没有任何遗漏,因为就像我说的那样,它可以在我的本地主机上运行,​​但不能在我的服务器上运行。

这是我的额外课程:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Extra extends Model
{
    use SoftDeletes;

    protected $dates = ['deleted_at'];
    protected $appends = ['checked'];


    public function category() {
        return $this->belongsTo('App\Models\ExtraCategory');
    }

    public function getCheckedAttribute() {
        return false;
    }
}

【问题讨论】:

  • 请告诉我们Extra类的定义。
  • 你检查过日志文件吗?
  • @bishop 我已经编辑了我的帖子。
  • @VitaliiSrimbanu 是的,我已经这样做了,没有抛出任何错误,我的 error_log 文件中只有警告是关于“不推荐使用自动填充 $HTTP_POST_DATA 并将在未来删除”
  • 如果您将withTrashed() 范围添加到您的查询中,它们是否会显示:Extra::withTrashed()-&gt;get()

标签: laravel laravel-5 eloquent


【解决方案1】:

当使用 SoftDeletes 时,deleted_at 列中除 NULL 之外的任何值都会告诉 Laravel 该记录已“删除”,因此它不会出现在普通 Eloquent 查询中,除非你使用 @ 987654324@范围。

查看您是如何保存/插入数据的,并确保将 deleted_at 列设置为 NULL 以获取不应删除的记录。

【讨论】:

  • 这对我有帮助,我不小心在“deleted_at”列上放了一个值而没有注意到。
猜你喜欢
  • 1970-01-01
  • 2018-12-21
  • 2020-05-30
  • 2021-05-23
  • 2023-02-04
  • 2021-10-28
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
相关资源
最近更新 更多